Ejemplo Práctica 100 casos Python -10

☞☞☞ Haga clic para ver más destacada del pitón del blog ☜☜☜

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
Aquí Insertar imagen Descripción

Publicados 111 artículos originales · ganado elogios 177 · vistas 210 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_45172832/article/details/105048723
Recomendado
Clasificación