70-Climbing Stairs (fibonacci数的矩阵计算)
//假设你正在爬楼梯,有n阶,每次可以爬1或2阶,有多少种方法可以爬到楼顶。
class solution70{
int res=0;
//List<String> res=new ArrayList<>();
public int dfs(int res,int n,StringBuffer s) {
if(n==0) {
res++;
return res;
}
//只能走一个阶梯
if(true) {
s.append('1');
dfs(res,n-1,s);
s.deleteCharAt(s.length()-1);
}
if(n>=2) {
s.append('2');
dfs(res,n-2,s);
s.deleteCharAt(s.length()-1);
}
return res;
}
public int climbStairs(int n) {
return dfs(res,n,new StringBuffer());
}
}//输入35的时候超出时间限制
class solution70_2{
public int climbStairs(int n) {
if(n<=0) {
return 0;
}
if(n==1) {
return 1;
}
if(n==2) {
return 2;
}
int first=2,second=1,cur;
for