Menu
CoddyTech

Find Minimum in Rotated Sorted Array

Una lista de enteros distintos se ordenó en orden creciente y luego se rotó: se tomaron algunos elementos del principio, posiblemente ninguno, y se movieron al final en el mismo orden. Por ejemplo, al rotar [2, 5, 9, 11, 13, 15, 17] en 3 posiciones, se obtiene [11, 13, 15, 17, 2, 5, 9]. Se te da la lista rotada nums. Devuelve su valor más pequeño en tiempo O(log n).

Función

findMin(nums: integer-array) → integer
numsinteger-array
la lista rotada y ordenada de números enteros distintos
Devuelveinteger
el valor más pequeño de nums

Restricciones

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • Todos los valores de nums son distintos.
  • nums es una lista creciente rotada k posiciones, donde 0 ≤ k < nums.length; k = 0 la deja sin rotar.

Ejemplos

Entrada
nums = [11, 13, 15, 17, 2, 5, 9]
Salida
2
Explicación
Los valores aumentan de 11 a 17 y después bajan a 2, donde comienza la segunda ejecución. La búsqueda ve 17 > 9 en el índice 3, así que el mínimo está a su derecha; después, 5 ≤ 9 y 2 ≤ 5 hacen retroceder hi hasta que el rango queda reducido al índice 4, que contiene 2.

lock icon+17 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Puedes devolver el k-ésimo valor más pequeño de nums en O(log n) sin ordenarlo?

Restablecer código
def findMin(nums):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

nums = [11, 13, 15, 17, 2, 5, 9]

Esperado

2