Antiguo Wei gana la oferta que le llevará a conocer --- serie de cepillo del título (42 y dos de S digital)

42. Las dos figuras y a la S

problema:

Una entrada de incremento y una matriz ordenada digital S, encuentra los dos números en la matriz, y de modo que son exactamente S, y si una pluralidad de dígitos igual a S, el producto de la salida del número mínimo de dos.

solución:

pensado:

Supuestos: si b> a, y no hay,
A + B = S;
(A - m) + (B + m) = S
entonces: (a - m) (b + m) = ab - (ba) m - m * m <ab; más pequeño producto descrito exterior
que está todavía sobre el método Squeeze! ! ! Sólo dos punteros
1.left comenzando, punto extremo derecho
2. Si ya menos de la suma, descritos demasiado pequeño, de izquierda a la derecha para encontrar un mayor número
3. Si es mayor que la suma, se describe también, la derecha, dejando que buscan más número pequeño de
4 e igual al número de vuelta a la izquierda y la derecha

código Python:

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        # write code here
        result=[]
        if not array:
            return result
        left=0
        right=len(array)-1
        while(left<right):
            csum=array[left]+array[right]
            if(csum==tsum):
                result.append(array[left])
                result.append(array[right])
                return result
            elif(csum<tsum):
                left+=1
            else:
                right-=1
        return result
Publicados 160 artículos originales · elogios ganado 30 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/yixieling4397/article/details/105055295
Recomendado
Clasificación