跳台阶
- 一只正常青蛙跳1或2步台阶的方法数我们已经知道了
class Solution {
public int numWays(int n) {
if(n==0){
return 1;
}
if(n<3){
return n;
}
int a=1,b=2,c=0;
for(int i = 3;i<=n;i++){
c = (a+b)%1000000007;
a = b;
b = c;
}
return c;
}
}
- 那变态青蛙(一次可跳1,2,…n步)跳台阶呢?
有
f
(
n
)
=
f
(
1
)
+
f
(
2
)
+
.
.
.
+
f
(
n
−
1
)
f(n)=f(1)+f(2)+...+f(n-1)
f(n)=f(1)+f(2)+...+f(n−1),
f
(
n
−
1
)
=
f
(
1
)
+
f
(
2
)
+
.
.
.
+
f
(
n
−
2
)
f(n-1)=f(1)+f(2)+...+f(n-2)
f(n−1)=f(1)+f(2)+...+f(n−2)
则
f
(
n
)
=
2
f
(
n
−
1
)
f(n)=2f(n-1)
f(n)=2f(n−1),
f
(
n
)
=
2
n
−
1
f
(
1
)
f(n)=2^{n-1}f(1)
f(n)=2n−1f(1)
class Solution {
public int numWaysII(int n) {
return 1 << (n-1);
}
}
零钱兑换
322零钱兑换
面试题 08.11. 硬币
300 最长递增子序列 子序列 != 子串,子序列可以是不连续的子串连起来的。
72 编辑距离
股票买卖