Menu
CoddyTech

Find Minimum in Rotated Sorted Array

SedangBinary searchpython iconjava iconcpp iconc iconjs icon+10

Sebuah list bilangan bulat berbeda diurutkan secara menaik, lalu diputar: sejumlah elemen, mungkin nol, diambil dari bagian depan dan dipindahkan ke bagian belakang dengan urutan yang sama. Sebagai contoh, [2, 5, 9, 11, 13, 15, 17] yang diputar sebanyak 3 menjadi [11, 13, 15, 17, 2, 5, 9]. Kamu mendapatkan list yang sudah diputar nums. Kembalikan nilai terkecilnya dalam waktu O(log n).

Fungsi

findMin(nums: integer-array) → integer
numsinteger-array
list bilangan bulat berbeda yang terurut dan telah diputar
Mengembalikaninteger
nilai terkecil di nums

Batasan

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • Semua nilai dalam nums berbeda.
  • nums adalah list dengan nilai yang meningkat, diputar sebanyak nilai k dengan 0 ≤ k < nums.length; k = 0 membuatnya tetap tidak diputar.

Contoh

Input
nums = [11, 13, 15, 17, 2, 5, 9]
Output
2
Penjelasan
Nilainya naik hingga 17 dan turun hingga 2. Karena 17 > 9, nilai minimum berada di sebelah kanan indeks 3; lalu 5 ≤ 9 dan 2 ≤ 5 menarik hi kembali ke indeks 4, yang berisi 2.
challenge icon

Pertanyaan lanjutan

Bisakah kamu mengembalikan nilai terkecil ke-k dari nums dalam waktu O(log n), tanpa mengurutkannya?

Reset kode
def findMin(nums):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

2