题目描述:
代码:
class Solution {
public int climbStairs(int n) {
int r1=0,r2=0,l=1;
for(int i=1;i<=n;i++){
r1=r2;
r2=l;
l=r1+r2;
}
return l;
}
}
思路:
题目描述:
代码:
class Solution {
public int rob(int[] nums) {
if(nums==null||nums.length==0)
return 0;
if(nums.length==1)
return nums[0];
int len=nums.length;
int []money=new int[len];
money[0]=nums[0];
money[1]=Math.max(nums[0],nums[1]);
for(int i=2;i<len;i++){
money[i]=Math.max(nums[i]+money[i-2],money[i-1]);
}
int pro=money[0];
for(int j=1;j<len;j++){
pro=Math.max(money[j],pro);
}
return pro;
}
}
思路:
题目描述:
代码:
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
if(triangle==null||triangle.size()==0){
return 0;
}
int n = triangle.size();
int [][]f=new int[n][n];
f[0][0]=triangle.get(0).get(0);
for(int i=1;i<n;i++){
f[i][0]=f[i-1][0]+triangle.get(i).get(0);
for(int j=1;j<i;j++){
f[i][j]=Math.min(f[i-1][j-1],f[i-1][j])+triangle.get(i).get(j);
}
f[i][i]=f[i-1][i-1]+triangle.get(i).get(i);
}
int minR=f[n-1][0];
for(int p=1;p<n;p++){
minR=Math.min(minR,f[n-1][p]);
}
return minR;
}
}
思路: