İçeriğe atla
CodeItRaw
Açgözlü & Aralıklar

Ders 3/4

En az kaç atlayışta sona varılır? Yine kutu seçmezsin; bu kez katmanlar hâlinde düşünürsün. Bir atlayışla erişebildiğin kutuların hepsini gez ve onlardan erişilebilen en uzak noktayı bul: bu, iki atlayışla erişilen katmanın sınırıdır. Sınıra geldiğinde bir atlayış say.

jumps = edge = farthest = 0
for i in range(len(values) - 1):
farthest = max(farthest, i + values[i])
if i == edge:
jumps += 1
edge = farthest
return jumps
edge şu anki atlayış sayısıyla varılabilen son kutudur. Ona varana kadar "bir sonraki atlayış beni en fazla nereye götürür" bilgisini toplarsın; hangi kutudan atlayacağına hiç karar vermezsin. Döngü son kutuya girmez: oradan atlamaya gerek yoktur.

Çember üzerindeki benzin istasyonlarında başka bir açgözlü fikir çalışır: bir başlangıçtan yola çıkıp depon bir noktada eksiye düşüyorsa, o aralıktaki hiçbir istasyon iyi bir başlangıç değildir (hepsine en az sıfır yakıtla varmıştın, yine de yetmedi). Bir sonraki istasyondan baştan başlarsın ve hiçbir başlangıcı iki kez denemezsin.

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

    En Az Zıplama

    Fonksiyon

  2. 02

    Benzin İstasyonu

    Fonksiyon

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