İçeriğe atla
CodeItRaw
Bağlı Listeler

Ders 3/4

İki işaretçinin hızları aynı, başlangıçları farklı da olabilir. Sondan k'inci düğümü bulmak için önce birini k adım ileri gönder, sonra ikisini birlikte yürüt. Öndeki sona vardığında, arkadaki tam k adım geride, yani aradığın düğümdedir.

lead = head
for _ in range(k):
lead = lead.next
trail = head
while lead is not None:
lead = lead.next
trail = trail.next
return trail
Aradaki mesafe hiç değişmez; değişen yalnızca ikisinin birlikte ne kadar ilerlediğidir. Uzunluğu ölçmek için ayrı bir geçişe gerek kalmaz.

Hızlar farklıysa başka bir şey öğrenirsin: zincirde döngü var mı? Döngü yoksa hızlı işaretçi sona varır ve biter. Döngü varsa hızlı olan içeride dönüp durur ve yavaşa arkadan yetişir: iki işaretçi aynı düğümde buluşur. Görülen düğümleri bir kümede tutmaya gerek kalmaz.

Görevler

Görevler sırayla açılır. Hepsini çözünce sonraki ders açılır.

Bu dersin görevleri, önceki dersler bitince açılır. Anlatımı şimdiden okuyabilirsin.

  1. 01

    Sondan k.

    Fonksiyon

  2. 02

    Sonsuz Döngü

    Fonksiyon

Sırayı beklemeden çözmek istersen bütün problemler kilitsiz açık: Problemler listesi