class Solution {
public:
int maxProfit(vector<int>& prices) {
int pre=0,cha=0,result=0;
for(int i=1;i<prices.size();i++) {
if(prices[i]<=prices[i-1]){
result+=cha;
cha=0;
}
else{
cha+=prices[i]-prices[i-1];
}
}
result+=cha;
return result;
}
};
第一题很简单 一遍过
第二题思路不容易想到 主要就是你的这个cover 和i+nums[i]去比较 这么个问题 就好了
class Solution {
public:
bool canJump(vector<int>& nums) {
int cover=nums[0];
for(int i=0;i<=cover;i++){
if(cover>=nums.size()-1)
return true;
if(i+nums[i]>cover)
cover=i+nums[i];
}
return false;
}
};
class Solution {
public:
int jump(vector<int>& nums) {
int cover=0;
int nextcover=0;
int pace=0;
if(nums.size()==1) return 0;
for(int i=0;i<nums.size();i++){
nextcover=max(nextcover,i+nums[i]);
if(i==cover){
cover=nextcover;
pace++;
if(cover>=nums.size()-1)
break;
}
}
return pace;
}
};