0Pricing
Coding Interview Prep · Ders

bisect_left ve bisect_right

Sıralı bir listede ekleme noktalarını bulun.

bisect_left ve bisect_right, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.

Tekrarlı Kod Olmadan Arama

Python'ın bisect modülü, sıralı listeler için test edilmiş bir ikili arama sunar. Elle yazılmış bir döngü olmadığında, hata ayıklamanız gereken bir eksik-bir fazla hatası da olmaz.

import bisect

Mantıksal Değerler Değil, Ekleme Konumları

bisect, doğru veya yanlış yerine, bir değerin listeyi sıralı tutacak şekilde eklenebileceği bir indeks döndürür. Asıl güç bu indeksten gelir.

a = [1, 3, 3, 3, 7]

bisect_left Sola Yanaşır

bisect_left, değerin yerleşebileceği ilk konumu döndürür. Yinelemelerde tüm eşit öğelerin önüne yerleşir, asla sonrasına değil.

bisect.bisect_left(a, 3)  # 1

bisect_right Sağa Yanaşır

bisect_right, son eşit öğenin hemen sonrasındaki konumu döndürür. Yinelemelerde eşleşen tüm değerlerin arkasına yerleşir.

bisect.bisect_right(a, 3)  # 4

Eşit Öğeleri Sayın

Bir değerin yinelemelerini saymak için ikisini birbirinden çıkarın; bunu O(log n) sürede yapabilirsiniz. right eksi left, değerin tam olarak kaç kez göründüğünü verir.

lo = bisect.bisect_left(a, 3)
hi = bisect.bisect_right(a, 3)
print(hi - lo)  # 3

Değer Mevcut muydu

Üyeliği kontrol etmek için bisect_left ile i değerini alın ve a[i] değerinin hedefe eşit olduğunu doğrulayın. Önce i değerinin liste uzunluğuna ulaşmadığından emin olun.

i = bisect.bisect_left(a, x)
found = i < len(a) and a[i] == x

X'e Eşit veya Ondan Büyük İlk Öğe

bisect_left, x'e eşit veya x'ten büyük olan ilk öğeyi de bulur. Bu indeks, alt sınır yanıtınızı doğrudan gösterir.

i = bisect.bisect_left(a, x)  # first >= x

Kesinlikle Daha Büyük İlk Öğe

x'ten kesinlikle büyük olan ilk öğeye mi ihtiyacınız var? bisect_right bu indeksi, üst sınırın karşılığını, doğrudan verir.

i = bisect.bisect_right(a, x)  # first > x

Ekleyin ve Sıralı Tutun

insort, konumu bulup tek çağrıda ekleme yapar ve listeyi sıralı tutar. Sıralı bir yapıyı anlık olarak oluştururken kullanışlıdır.

bisect.insort(a, 5)  # a stays sorted

Bir Pencerenin İçinde Arayın

İsteğe bağlı lo ve hi bağımsız değişkenleri, aramayı bir dilimle sınırlar. Yalnızca bir alt aralıkla ilgilendiğinizde kopyalama yapmanızı önler.

bisect.bisect_left(a, x, 2, 5)

Yardımcı Listeyle Anahtarlar

bisect öğelerin tamamını karşılaştırır; bu nedenle bir alana göre arama yapmak için yalnızca bu anahtarlardan oluşan paralel bir liste oluşturup bisect'i onun üzerinde kullanın.

keys = [p[0] for p in pairs]
i = bisect.bisect_left(keys, target)

Hızlı Kontrol

Yinelemeleri ve ekleme konumlarını nasıl ele alacağınızı düşünün.

Özet: Bisect Ustalığı

Artık ekleme konumlarını bulabilir, yinelemeleri sayabilir ve alt ve üst sınırları logaritmik sürede belirleyebilirsiniz. Bir döngü yazmadan önce bisect'e başvurun. ✨

Sıkça Sorulan Sorular

“bisect_left ve bisect_right” dersi ücretsiz mi?

Evet — “bisect_left ve bisect_right” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.

“bisect_left ve bisect_right” dersinde ne öğreneceğim?

Sıralı bir listede ekleme noktalarını bulun. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“bisect_left ve bisect_right” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Hatasız Klasik İkili Arama
  2. bisect_left ve bisect_right
  3. İlk True: Predicate İkili Araması
  4. Yanıt Üzerinde İkili Arama
← Coding Interview Prep Sayfasına Dön