Menu
CoddyTech

Search in Rotated Sorted Array

Birbirinden farklı tam sayılardan oluşan bir liste artan sırada sıralandı ve ardından döndürüldü: sıfır veya daha fazla sayıda öğe baştan alınıp aynı sırayla sona taşındı. Örneğin, [2, 5, 8, 11, 15, 19, 23] listesi 4 konum döndürüldüğünde [15, 19, 23, 2, 5, 8, 11] olur. Döndürülmüş nums listesini ve bir target tam sayısını alırsınız. target değerinin nums içindeki indeksini 0'dan başlayarak döndürün; listede yoksa -1 döndürün. Bunu O(log n) zamanda yapın.

Fonksiyon

search(nums: integer-array, target: integer) → integer
numsinteger-array
döndürülmüş sıralı farklı tam sayılar listesi
targetinteger
aranacak değer
Döndürürinteger
nums içindeki target öğesinin indeksi veya bulunmuyorsa -1

Kısıtlar

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i], target ≤ 104
  • Tüm nums değerleri birbirinden farklıdır.
  • nums, 0 ≤ k < nums.length olacak şekilde bir k değeri kadar döndürülmüş artan bir listedir; k = 0 ise döndürülmeden kalır.

Örnekler

Girdi
nums = [15, 19, 23, 2, 5, 8, 11]target = 5
Çıktı
4
Açıklama
5, 4. indekste yer alır. İlk orta eleman olan 3. indekste 2 bulunur; dolayısıyla sağ yarı [2, 5, 8, 11] sıralıdır ve 5, 2 ile 11 arasındadır. Bir sonraki orta eleman olan 5. indekste 8 bulunur; sıralı sol kısım [5, 8] içinde 5 yer alır ve bu da 4. indekse götürür.

lock iconGönderirken +23 gizli test

challenge icon

Ek soru

nums yinelenen değerler içerebiliyorsa hiçbir algoritma O(log n) garantisi veremez. Bunu kanıtlayabilir misin? İçinde tek bir 0 gizlenmiş 1'lerden oluşan döndürülmüş bir liste oluştur; 0'ı arayan herhangi bir aramanın her öğeyi okuması gereksin.

Kodu sıfırla
def search(nums, target):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

nums = [15, 19, 23, 2, 5, 8, 11]
target = 5

Beklenen

4