Menu
CoddyTech

Find Minimum in Rotated Sorted Array

Uma lista de inteiros distintos foi ordenada em ordem crescente e depois rotacionada: uma quantidade de elementos, possivelmente zero, foi retirada do início e movida para o final na mesma ordem. Por exemplo, [2, 5, 9, 11, 13, 15, 17] rotacionada em 3 posições se torna [11, 13, 15, 17, 2, 5, 9]. Você recebe a lista rotacionada nums. Retorne seu menor valor em O(log n) tempo.

Função

findMin(nums: integer-array) → integer
numsinteger-array
a lista ordenada e rotacionada de números inteiros distintos
Retornainteger
o menor valor em nums

Restrições

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • Todos os valores em nums são distintos.
  • nums é uma lista crescente rotacionada por algum k com 0 ≤ k < nums.length; k = 0 a deixa sem rotação.

Exemplos

Entrada
nums = [11, 13, 15, 17, 2, 5, 9]
Saída
2
Explicação
Os valores sobem de 11 para 17 e depois caem para 2, onde a segunda execução começa. A busca encontra 17 > 9 no índice 3, então o mínimo está à sua direita; em seguida, 5 ≤ 9 e 2 ≤ 5 puxam hi de volta até que o intervalo seja apenas o índice 4, que contém 2.

lock icon+17 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue retornar o k-ésimo menor valor de nums em O(log n) tempo, sem ordená-lo?

Redefinir código
def findMin(nums):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

2