![](https://img-blog.csdnimg.cn/2020022810182882.gif)
☞☞☞ Haga clic para ver más destacada del pitón del blog ☜☜☜
![](https://img-blog.csdnimg.cn/20200229014233733.gif)
Python incluye ejercicios 10
título Descripción
Dada una matriz n nums incluye habitaciones enteros, determina si hay tres elementos a, b, c nums tal que a + b + c = 0? Todas las condiciones no son satisfechas para encontrar duplicados triples.
Ideas de resolución de problemas:
1, la primera especie, de pequeño a grande de inicio
2, la capa de una más externa para el bucle, de 0 a len (nums), todos ir de nuevo
3, cada ciclo, el número de la posición I y el siguiente número de consultas dos números, de tal manera que tres y un número de 0 a
4, los dos números puede estar colocado detrás de un número de columnas y la posición i número L después del último número R & lt
. 5, y de acuerdo con los resultados de tres números, si simplemente es 0, L + 1, R -1 encontrar un conjunto de soluciones de
6, y si el resultado es mayor que 0, el valor de los movimientos correctos a la izquierda, es decir. 1-R & lt
. 7, y si el resultado es menor que 0, el valor de la izquierda a la derecha, es decir.,. 1 + L
. 8, por encima operación puede ser realizada múltiples veces (el bucle while), la condición de salida es L <R
Código es el siguiente:
class Solution(object):
def threeSum(self, nums):
nums.sort() # 排序
res = []
for i in range(len(nums)): # 遍历每一个数
if i == 0 or nums[i] > nums[i - 1]: # 确定不重复的数字(开头)
l = i + 1
r = len(nums) - 1
while l < r: # 左边的位置 必须小于 右边的位置
s = nums[i] + nums[l] + nums[r] # 三个数的和
if s == 0:
res.append([nums[i], nums[l], nums[r]])
# 再找下一组解
l += 1
r -= 1
# 左边向右移动到不重复数为止
while l < r and nums[l] == nums[l - 1]: l += 1
# 右边向左边移动不重复数为止
while r > l and nums[r] == nums[r + 1]: r -= 1
elif s > 0:
r -= 1
else:
l += 1
return res
código de ensayo
nums =
[
[-1, 0, 1, 2, -1, -4],
[-4, -1, -1, 0, 1, 2, 4],
[-5, -3, -2, 0, 1, 2, 2, 3],
[1, 2, -2, -1],
[0, -4, -1, -4, -2, -3, 2],
[0,1,1],
[0,0,0],
[4, 0, 2, 3, -1],
[3, 0, -2, -1, 1, 2],
[-4, -2, -2, -2, 0, 1, 2, 2, 2, 3, 3, 4, 4, 6, 6],
[-1, -2, -3, 4, 1, 3, 0, 3, -2, 1, -2, 2, -1, 1, -5, 4, -3],
[-4, -2, 1, -5, -4, -4, 4, -2, 0, 4, 0, -2, 3, 1, -5, 0]
]
for datas in nums:
print(Solution().threeSum(datas))
Más consejos se pueden encontrar en cualquier curso Oh hermana: 1976279437