defclimbStairs(n: Int): Int = { if (n == 1) return1 if (n == 2) return2 climbStairs(n - 1) + climbStairs(n - 2) }
/** * O(n), O(n) */ defclimbStairs1(n: Int): Int = { if (n == 1) return1 if (n == 2) return2 val dp = newArray[Int](n) dp(0) = 1 dp(1) = 2 for (l <- 2 until n) { dp(l) = dp(l - 1) + dp(l - 2) } dp(n - 1) }
/** * O(n), O(1) */ defclimbStairs2(n: Int): Int = { if (n == 1) return1 if (n == 2) return2 var i = 1 var j = 2 var res = 0 for (l <- 2 until n) { res = i + j i = j j = res } res } }