标签:arr return int memo climbStairs 70 Climbing Stairs public
递归解决方法
public class Main {
int sum = 0;
public int climbStairs(int n) {
if (n <= 0) {//
sum++;
} else if (n == 1) {
sum++;
} else {
climbStairs(n - 1);//每一种结果都有两种选择 要么一步 要么两步
climbStairs(n - 2);
}
return sum;
}
public static void main(String[]args) {
Main m=new Main();
System.out.println(m.climbStairs(2));
}
}
非递归
public class Main {
int sum = 0;
public int climbStairs(int n) {
if (n <= 1) {
return 1;
} else {
int[] arr = new int[n];
arr[0] = 1;
arr[1] = 2;
int i = 2;
while (i < n && i>= 2) {
arr[i ] = arr[i-1] + arr[i - 2];//每一个都是前两位之和
i++;
}
return arr[n - 1];
}
}
public static void main(String[] args) {
Main m = new Main();
System.out.println(m.climbStairs(8));
}
}
其他人解法也是大同小异
private int[] memo;
public int climbStairs(int n) {
memo = new int[n + 1];
Arrays.fill(memo, -1);
return getClimbStairs(n);
}
private int getClimbStairs(int n) {
if (n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
if (memo[n] == -1) {
memo[n] = getClimbStairs(n - 1) + getClimbStairs(n - 2);
}
return memo[n];
}
}
int climbStairs(int n){
int x1=0,x2=1;
int i;
int sum;
for(i=1;i<=n;i++)
{
sum=x1+x2;
x1=x2;
x2=sum;
}
return sum;
}
哈希表 有趣
public class Solution {
int result;
HashMap<Integer, Integer> memo = new HashMap<Integer, Integer>();
public int climbStairs(int n) {
if(n < 2) {
return 1;
}
if(memo.containsKey(n)) {
return memo.get(n);
}
result = climbStairs(n-1) + climbStairs(n-2);
memo.put(n,result);
return result;
}
}
标签:arr,return,int,memo,climbStairs,70,Climbing,Stairs,public
来源: https://www.cnblogs.com/cznczai/p/11150521.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。