122.买卖股票的最佳时机II
只收集每日的正利润
class Solution {
public int maxProfit(int[] prices) {
int res = 0;
for(int i = 1; i < prices.length; i++) {//第二天才会产生利润 所以i=1
res += Math.max(prices[i] - prices[i - 1] , 0);//只收集正利润
}
return res;
}
}
55. 跳跃游戏
求出最大覆盖范围
class Solution {
public boolean canJump(int[] nums) {
int cover = nums[0];
if(nums.length == 1) return true;
for(int i = 0; i <= cover; i++) {
cover = Math.max(i + nums[i], cover);
if(cover >= nums.length - 1)
return true;
}
return false;
}
}
45.跳跃游戏II
最少步数
class Solution {
public int jump(int[] nums) {
if(nums == null || nums.length == 0 || nums.length == 1)
return 0;
int cur = 0;
int next = 0;
int res = 0;
for(int i = 0; i < nums.length; i++) {
next = Math.max(i + nums[i], next);
if(i == cur) {
res++;
cur = next;
if(cur >= nums.length - 1) break;
}
}
return res;
}
}
本文介绍了四个编程问题,涉及股票投资中的利润最大化策略(只收集每日正利润),以及两个跳跃游戏版本(最大覆盖范围和最少步数)。通过代码实例展示了如何用编程解决这些问题。
947

被折叠的 条评论
为什么被折叠?



