代码随想录算法训练营Day32|贪心算法02
总体不算难,但是解题思路比较巧妙
一、122. 买卖股票的最佳时机 II
class Solution {
public int maxProfit(int[] prices) {
int result = 0;
int len=prices.length;
for (int i = 1; i <len; i++) {
result += Math.max(prices[i] - prices[i - 1], 0);
}
return result;
}
}
二、55. 跳跃游戏
class Solution {
public boolean canJump(int[] nums) {
if (nums.length == 1) {
return true;
}
int coverRange = 0;
//在覆盖范围内更新最大的覆盖范围
//只要能覆盖到就能够到达
for (int i = 0; i <= coverRange; i++) {
coverRange = Math.max(coverRange, i + nums[i]);
if (coverRange >= nums.length - 1) {
return true;
}
}
return false;
}
}
三、45. 跳跃游戏 II
class Solution {
public int jump(int[] nums) {
int result = 0;
int end = 0;
int temp = 0;
for (int i = 0; i <= end && end < nums.length - 1; ++i) {
temp = Math.max(temp, i + nums[i]);
// 可达位置的改变次数就是跳跃次数
if (i == end) {
end = temp;
result++;
}
}
return result;
}
}