122. 买卖股票的最佳时机 II
class Solution {
// 收集每天正利润
public:
int maxProfit(vector<int>& prices) {
int max_profit = 0;
for (int i = 1; i < prices.size(); i++) {
max_profit += max(prices[i] - prices[i - 1], 0);
}
return max_profit;
}
};
55. 跳跃游戏
class Solution {
// 遍历取每一个位置的最大步骤
public:
bool canJump(vector<int>& nums) {
if (nums.size() == 1) return true;
int step = nums[0];
for (int i = 1; i < nums.size() - 1; i++) {
step--;
if (step < 0) return false;
if (nums[i] > step) step = nums[i];
}
return step >= 1;
}
};
45. 跳跃游戏 II
class Solution {
// 走到cur_dist还没有到终点才需要更新next_dist与count
// 遍历的过程中不断计算next_dist最大值
public:
int jump(vector<int>& nums) {
if (nums.size() == 1) return 0;
int cur_dist = 0;
int next_dist = 0;
int count = 0;
for (int i = 0; i < nums.size(); i++) {
next_dist = max(next_dist, nums[i] + i);
if (i == cur_dist) {
count++;
cur_dist = next_dist;
if (cur_dist >= nums.size() - 1) break;
}
}
return count;
}
};