第一题
122.买卖股票的最佳时机II
class Solution {
public:
int maxProfit(vector<int>& nums) {
int out = 0;
for(int i = 1; i < nums.size(); i++){//遍历数组
out += max(nums[i] - nums[i - 1], 0);//只相加正数的差值
}
return out;
}
};
第二题
55. 跳跃游戏
class Solution {
public:
bool canJump(vector<int>& nums) {
int cur = 0;//目前获取的跳跃距离
int next = 0;//下一个跳跃距离
if(nums.size() == 1) return true;
for(int i = 0; i < nums.size();i++){//遍历数组
next = max(next, nums[i] + i);//获取下一个最大跳跃距离
if(i == cur){//到达前一个跳跃距离
cur = next;//更新目前跳跃距离
}
if(cur >= nums.size()-1) return true;//当目前跳跃距离覆盖了数字的大小,返回true
}
return false;//无法到达数组的最后一个元素返回false
}
};
第三题
45.跳跃游戏II
lass Solution {
public:
int jump(vector<int>& nums) {
int cur = 0;//目前跳跃最大距离
int next = 0;//下一个跳跃最大距离
int count = 0;//计数
for(int i = 0; i < nums.size() - 1; i++){//遍历数组但是数组大小要减1
next = max(next, nums[i]+i);//获取下一个跳跃最大值
if(i == cur){//当下标到达前一个跳跃距离就更新这个目前跳跃最大距离
cur = next;
count++;
}
}
return count;
}
};