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: