Climbing Stairs
Problem (yeniden ifade)
1 veya 2 basamak çıkabilirsin. n basamağın tepesine kaç farklı yolla ulaşılır?
Sezgi
ways(n) = ways(n-1) + ways(n-2). Kaydıran değişkenlerle Fibonacci.
Yaklaşımlar
1B DP
Tested onlyTime O(n)Space O(1)
Fikir. dp[i] = dp[i-1] + dp[i-2]; yalnızca önceki iki değeri tut.
Adım adım. n=3 → 3 yol: 1+1+1, 1+2, 2+1.
Ödünleşimler. Kapalı form mümkün ama DP mülakatta net.
Solution
export function climbStairs(n: number): number {
if (n <= 2) return n;
let a = 1, b = 2;
for (let i = 3; i <= n; i++) {
const c = a + b;
a = b;
b = c;
}
return b;
}
export function climbStairs(n: number): number {
if (n <= 2) return n;
let a = 1, b = 2;
for (let i = 3; i <= n; i++) {
const c = a + b;
a = b;
b = c;
}
return b;
}
Şablon bağlantısı
Tek boyutlu DP doğrusal yineleme.
Yansıma
- Bu problemi 90 saniye içinde hangi kalıp ele verdi?
- Standart şablondan ne değişti?
- Mevcut çözümü ne bozar?