Menu
CoddyTech

Binary Search

Kamu mendapatkan list bilangan bulat nums yang diurutkan secara menaik, tanpa nilai yang berulang, dan sebuah bilangan bulat target. Kembalikan indeks target dalam nums, dihitung mulai dari 0, atau -1 jika tidak ada dalam list. Usahakan waktu O(log n), yang berarti kamu tidak bisa memeriksa setiap elemen.

Fungsi

search(nums: integer-array, target: integer) → integer
numsinteger-array
daftar bilangan bulat berbeda yang telah diurutkan
targetinteger
nilai yang dicari
Mengembalikaninteger
indeks target dalam nums, atau -1 jika tidak ditemukan

Batasan

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums diurutkan dalam urutan menaik ketat, jadi setiap nilai muncul satu kali.

Contoh

Input
nums = [-7, -2, 0, 4, 9, 15, 23]target = 9
Output
4
Penjelasan
nums[4] bernilai 9. Pencarian memeriksa indeks 3 (nilainya 4, terlalu kecil), lalu indeks 5 (nilainya 15, terlalu besar), lalu indeks 4, tempat nilai 9 ditemukan.
challenge icon

Pertanyaan lanjutan

Jika nums dapat memiliki nilai yang berulang, bagaimana kamu mengembalikan indeks pertama target, tetap dalam O(log n)?

Reset kode
def search(nums, target):
    # Tulis kodemu di sini

Tes #1

Tes #2

Argumen

nums = [-7, -2, 0, 4, 9, 15, 23]
target = 9

Output yang diharapkan

4