算法练习LeetCode初级算法之动态规划
Posted gavinygm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法练习LeetCode初级算法之动态规划相关的知识,希望对你有一定的参考价值。
爬楼梯:斐波那契数列
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
非递归解法
class Solution {
public int climbStairs(int n) {
if (n==1) {
return 1;
}
if (n==2) {
return 2;
}
int n1=1,n2=2;
for (int i = 0; i <n-2; i++) {
int m=n1+n2;
n1=n2;
n2=m;
}
return n2;
}
}
递归解法
class Solution {
int[] result=null;
public int climbStairs(int n) {
result=new int[n+1];
Arrays.fill(result, -1);
f(n);
return result[n];
}
private void f(int X) {
if (result[X]!=-1) {
return;
}
if (X==0||X==1) {
result[X]=1;
return;
}
f(X-1);
f(X-2);
result[X]=result[X-1]+result[X-2];
}
}
以上是关于算法练习LeetCode初级算法之动态规划的主要内容,如果未能解决你的问题,请参考以下文章
LeetCodeLeetCode之跳跃游戏——动态规划+贪心算法