Leetcode Leetcode 228. Intervalo de resumen

Tema:

Dada una matriz de números enteros ordenados sin elementos repetidos.
Devuelve una lista de los rangos de rango ordenados más pequeños que cubren todos los números de la matriz. En otras palabras, cada elemento de nums está cubierto exactamente por un cierto rango, y no hay un número x que pertenezca a un cierto rango pero que no pertenezca a nums.
Cada intervalo de intervalo [a, b] de la lista debe aparecer en el siguiente formato:
"a-> b", si a! = B
"a", si a == b

Ejemplo 1:

Entrada: nums = [0,1,2,4,5,7]
Salida: ["0-> 2", "4-> 5", "7"]
Explicación: El rango de intervalo es:
[0,2] - -> "0-> 2"
[4,5] -> "4-> 5"
[7,7] -> "7"

Ejemplo_2:

Entrada: nums = [0,2,3,4,6,8,9]
Salida: ["0", "2-> 4", "6", "8-> 9"]
Explicación: El intervalo de intervalo es :
[0,0] -> "0"
[2,4] -> "2-> 4"
[6,6] -> "6"
[8,9] -> "8-> 9 "

Ejemplo_3:

Entrada: nums = []
Salida: []

Ejemplo_4:

Entrada: nums = [-1]
Salida: ["-1"]

Ejemplo_5:

Entrada: nums = [0]
Salida: ["0"]

Solución:

Siguiendo la idea de la Pregunta 830 ,
podemos recorrer la secuencia
y registrar la longitud de la matriz de crecimiento actual.
Si el siguiente carácter es diferente del carácter actual más uno, o se ha enumerado hasta el final de la cadena,
significa que el el carácter actual es el final del grupo actual
cada vez que se encuentra el grupo actual.Cuando la cola
si la longitud del paquete alcanza 2, agregamos al resultado de acuerdo con el formato de resolución del sujeto
si la longitud del paquete no se alcanza 2 (1) , acabamos de agregar comillas de res en
la última res de retorno completa

Código:

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        res = []
        n = len(nums)
        count = 1

        if n == 0:
            return nums

        for i in range(n):
            if i == n - 1 or nums[i]  + 1 != nums[i + 1] :
                if count >= 2:
                    res.append("{}->{}".format(nums[i - count + 1], nums[i]))
                else:
                    res.append("{}".format(nums[i]))
                count = 1

            else:
                count += 1
        
        return res

Responder:
El efecto es aceptable

Supongo que te gusta

Origin blog.csdn.net/weixin_50791900/article/details/112424077
Recomendado
Clasificación