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ü: muhtemelen sıfır olmak üzere belirli sayıda eleman baştan alınıp aynı sırayla sona taşındı. Örneğin, [2, 5, 8, 11, 15, 19, 23] 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ıyorsun. target değerinin nums içindeki indeksini 0'dan başlayarak sayıp döndür; listede yoksa -1 döndür. Bunu O(log n) zamanda yap.

Fonksiyon

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

Kısıtlar

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i], target ≤ 104
  • <|?
  • nums, 0 ≤ k < nums.length koşulunu sağlayan bir k kadar döndürülmüş artan bir listedir; k = 0 listeyi döndürülmemiş hâlde bırakır.

Örnekler

Girdi
nums = [15, 19, 23, 2, 5, 8, 11]target = 5
Çıktı
4
Açıklama
İlk orta eleman, indeks 3, 2 değerini tutar; bu nedenle sağ yarı [2, 5, 8, 11] sıralıdır ve 5 değerini tutar. Sonraki orta eleman, indeks 5, 8 değerini tutar; sıralı sol bölüm [5, 8] 5 değerini tutar ve bu da indeks 4'e götürür.
challenge icon

Ek soru

Eğer nums yinelenen değerler içerebiliyorsa, hiçbir algoritma O(log n) garantisi veremez. Tek bir 0'ı gizleyen, döndürülmüş bir 1'ler listesiyle bunu kanıtlayabilir misin?

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

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

4