LeetCode70
可以1次爬1层或2层楼梯。问n层楼梯有几种爬法。
对于第n层楼梯有2种总的情况:
1.先爬到n-2层,然后1次爬2层
2.先爬到n-1层,然后1次爬1层
所以steps[n]=steps[n-1]+steps[n-2].
int climbStairs(int n)
{
vector<int> steps(n,0);
steps[0]=1;
steps[1]=2;
for(int i=2;i<n;i++)
{
steps[i]=steps[i-2]+steps[i-1];
}
return steps[n-1];
}
LeetCode198
不能抢劫相邻家庭
通过a,b两个变量轮流记录当前序号的最大值。
int rob(vector<int>& nums) {
int a = 0;
int b = 0;
for (int i=0; i<n; i++)
{
if (i%2==0)
a = max(a+num[i], b);
else
b = max(a, b+num[i]);
}
return max(a, b);
}