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
DoğrulanmadıZaman O(n)Alan 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.
Çözüm
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
dp[i] = dp[i-1] + dp[i-2]. 1 veya 2 basamak. n = 1 cevap 1, n = 2 cevap 2.- Dizi yerine iki değişken yeter. Sıra Fibonacci.
- n = 3 cevap 3. Büyük n’de yalnızca iki önceki lazım.