122.买卖股票的最佳时机II
题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode)
class Solution {
public int maxProfit(int[] prices) {
int max = 0;
for(int i = 1; i < prices.length; ++i) {
if(prices[i] > prices[i-1]) {
max += prices[i] - prices[i-1];
}
}
return max;
}
}
如果明天卖掉能赚,今天就买
55. 跳跃游戏
class Solution {
public boolean canJump(int[] nums) {
int max = nums[0];
for(int i = 0; i < nums.length; ++i) {
if(max < i) {
return false;
}else if(max > nums.length) {
return true;
} else {
max = max > nums[i] + i ? max : nums[i] + i;
}
}
return true;
}
}
不停地更新最大跳跃距离,直到不能动或者跳出去
45.跳跃游戏II
题目链接:45. 跳跃游戏 II - 力扣(LeetCode)
从终点跳到开头:
class Solution {
public int jump(int[] nums) {
int ans = 0, index = nums.length - 1;
while(index != 0) {
int k = index;
for(int i = index; i >= 0; --i) {
if(nums[i] + i >= k) {
index = i;
}
}
++ans;
}
return ans;
}
}
贪心:
class Solution {
public int jump(int[] nums) {
int maxPosition = 0;
int end = 0;
int steps = 0;
for(int i = 0; i < nums.length - 1; ++i) {
maxPosition = nums[i] + i > maxPosition ? nums[i] + i : maxPosition;
if(end == i) {
end = maxPosition;
++steps;
}
}
return steps;
}
}
跳的时候考虑下一次怎样才能跳最远