Menu
CoddyTech

Find First and Last Position of Element in Sorted Array

SedangBinary searchpython iconjava iconcpp iconc iconjs icon+10

Kamu mendapatkan sebuah list bilangan bulat nums yang diurutkan dalam urutan tidak menurun, sehingga suatu nilai dapat muncul berulang kali, dan sebuah bilangan bulat target. Kembalikan sebuah list berisi dua indeks, dihitung mulai dari 0: posisi pertama dan terakhir tempat target muncul. Jika target tidak ada dalam list, kembalikan [-1, -1]. Usahakan agar waktu yang dibutuhkan O(log n).

Fungsi

searchRange(nums: integer-array, target: integer) → integer-array
numsinteger-array
daftar bilangan bulat yang sudah diurutkan, yang nilainya mungkin berulang
targetinteger
nilai yang dicari
Mengembalikaninteger-array
indeks pertama dan terakhir dari target, atau [-1, -1] jika tidak ditemukan

Batasan

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i], target ≤ 104
  • nums diurutkan dalam urutan yang tidak menurun.

Contoh

Input
nums = [3, 5, 5, 5, 8, 9, 9, 12]target = 5
Output
[1, 3]
Penjelasan
Tiga salinan 5 berada di indeks 1, 2, dan 3, jadi perulangan dimulai dari 1 dan berakhir di 3. Indeks 0 berisi 3 dan indeks 4 berisi 8, jadi perulangan tidak dapat berlanjut lebih jauh.
challenge icon

Pertanyaan lanjutan

Jika list yang sama menerima ribuan kueri untuk target yang berbeda, bisakah satu kali pemrosesan sebelumnya membuat setiap kueri lebih cepat daripada O(log n)?

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

Tes #1

Tes #2

Argumen

nums = [3, 5, 5, 5, 8, 9, 9, 12]
target = 5

Output yang diharapkan

[1, 3]