● 122.买卖股票的最佳时机II
● 55. 跳跃游戏
● 45.跳跃游戏II
122. 买卖股票的最佳时机II
本来想想可能是抄底,看了下随想录发现不用那么麻烦
只需要有利润的时候加就行了,确实
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size() == 1) return 0;
int profit = 0;
for(int i = 1; i < prices.size(); ++i) {
profit += max(0, prices[i] - prices[i - 1]);
}
return profit;
}
};
55. 跳跃游戏
主要是贪一个最大覆盖的范围
能覆盖重点就可以
关键是 cover = max(cover, nums[i] + i);
class Solution {
public:
bool canJump(vector<int>& nums) {
if(nums.size() == 1) return true;
int cover = 0;
for(int i = 0; i <= cover; ++i) {
cover = max(cover, nums[i] + i);
if(cover >= nums.size() - 1) return true;
}
return false;
}
};
45. 跳跃游戏II
还是计算覆盖范围
当前最远也够不到终点就要+1
总之还是很复杂的题目,多思考思考得
class Solution {
public:
int jump(vector<int>& nums) {
if(nums.size() == 1) return 0;
int curCover = 0;
int nextCover = 0;
int ans = 0;
for(int i = 0; i < nums.size(); ++i) {
nextCover = max(nextCover, nums[i] + i);
if(i == curCover) {
if(curCover < nums.size() - 1) {
ans++;
curCover = nextCover;
if(nextCover >= nums.size() -1 ) break;
} else break;
}
}
return ans;
}
};