Mediumgreedy
Jump Game
Problem (yeniden ifade)
0 indeksinden, her nums[i] maksimum sıçrama uzunluğu. Son indekse ulaşıp ulaşamayacağını döndür.
Sezgi
En uzak ulaşılabilir indeksi izle; i far’ı aşarsa takılı kalınır.
Yaklaşımlar
En uzak erişim
DoğrulanmadıZaman O(n)Alan O(1)
Fikir. far = max(far, i + nums[i]); i > far ise fail.
Yürüyüş. [2,3,1,1,4] far sona büyür → true; [3,2,1,0,4] 0’da takılır → false.
Trade-off. Greedy O(n) vs DP ulaşılabilirlik O(n²).
Çözüm
export function canJump(nums: number[]): boolean {
let far = 0;
for (let i = 0; i < nums.length; i++) {
if (i > far) return false;
far = Math.max(far, i + nums[i]!);
if (far >= nums.length - 1) return true;
}
return true;
}
export function canJump(nums: number[]): boolean {
let far = 0;
for (let i = 0; i < nums.length; i++) {
if (i > far) return false;
far = Math.max(far, i + nums[i]!);
if (far >= nums.length - 1) return true;
}
return true;
}
Şablon bağlantısı
Greedy en uzak erişim.
Yansıma
reachgördüğün en uzak indeks.i > reachise oraya varamazsın, false.- 0’a basıp
reachilerlemiyorsa takılırsın. Son hücre 0 olsa dareachoraya vardıysa true. [0]true.[1,0,0]index 2’ye varamaz.