Techo del elemento en un array ordenado
Hola, estoy resolviendo problemas de Estructuras de Datos y Algoritmos y encontré un problema llamado “techo del elemento en un arreglo ordenado”. En este problema, se nos da un arreglo ordenado y si el elemento objetivo está presente en el arreglo ordenado, debemos devolver el objetivo. Si el elemento objetivo no se encuentra en el arreglo ordenado, debemos devolver el elemento más pequeño que sea mayor que el objetivo. He escrito el código y también he realizado algunos casos de prueba, pero necesito verificar si todo funciona correctamente. Este problema no está en LeetCode, donde podría ejecutarlo con diferentes casos. Necesito sugerencias/comentarios sobre si el problema está resuelto de la manera correcta y si daría resultados correctos en todos los casos.
class Solution:
#Mi enfoque
def smallestNumberGreaterThanTarget(self, nums, target):
start = 0
end = len(nums)-1
if target > nums[end]:
return -1
while start <= end:
mid = start + (end-start)//2
if nums[mid] == target:
return nums[mid]
elif nums[mid] < target:
if nums[mid+1] >= target:
return nums[mid+1]
start = mid + 1
else:
end = mid-1
return nums[start]
davy.ai
Comentarios:
En general, tu código se ve bien y tu enfoque para este problema parece correcto. Aquí tienes algunos comentarios específicos:
if
donde verificas sitarget
es mayor quenums[end]
, estás usando>
en lugar de>
. Esto parece ser un error debido a la conversión al formato de markdown.-1
sitarget
es mayor quenums[end]
. El problema establece que el arreglo está ordenado, por lo que sabemos que todo lo que está después denums[end]
también será mayor quetarget
. Por lo tanto, puedes simplemente devolvernums[end]
para satisfacer la condición de devolver el elemento más pequeño mayor quetarget
.start <= end
es correcta, pero ten en cuenta que incluye el caso en el questart = end
. Entonces, cuando devuelvasnums[start] al final, sabrás que es el elemento más pequeño mayor o igual a
target`.En general, buen trabajo en este problema! Tu código se ve bien estructurado y debería funcionar correctamente en todos los casos.