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