[−][src]Function leetcode_for_rust::cd0070_climbing_stairs::climb_stairs
pub fn climb_stairs(n: i32) -> i32
Solutions
Approach 1: Dynamic Programming
-
Time complexity: O(n)
-
Space complexity: O(n)
-
Runtime: 0 ms
-
Memory: 2.3 MB
impl Solution { pub fn climb_stairs(n: i32) -> i32 { match n { 0 | 1 | 2 => n, k => { let mut count = vec![0; (n + 1) as usize]; count[1] = 1; count[2] = 2; for i in 3..=k as usize { count[i] = count[i - 1] + count[i - 2]; } count[k as usize] } } } }
Approach 2: Fibonacci Number
-
Time complexity: O(n)
-
Space complexity: O(1)
-
Runtime: 0 ms
-
Memory: 2.4 MB
impl Solution { pub fn climb_stairs(n: i32) -> i32 { match n { 0 | 1 | 2 => n, k => (2..k).fold((1, 2), |acc, __| (acc.1, acc.0 + acc.1)).1, } } }
Approach 3: Dynamic Programming
-
Time complexity: O(2n)
-
Space complexity: O(n)
-
Runtime: 0 ms
-
Memory: 2.5 MB
impl Solution { pub fn climb_stairs(n: i32) -> i32 { let steps = vec![1, 2]; let mut dp = vec![0; (n + 1) as usize]; dp[0] = 1; for i in 1..=n as usize { for j in 0..steps.len() { if i >= steps[j] { dp[i] += dp[i - steps[j]]; } } } *dp.last().unwrap() } }