文章目录
Leetcode 122. 买卖股票的最佳时机 II
题目: 122. 买卖股票的最佳时机 II
解析: 代码随想录解析
解题思路
记录当前的购入金额,当上一次卖出金额收益高于这次的卖出金额时,卖出上次,这次的记为购入金额。(没用到贪心)
代码
java
class Solution {
public int maxProfit(int[] prices) {
int profit = 0;
int purchase = prices[0];
int sell = prices[0];
for (int i = 1; i < prices.length; i++) {
if (prices[i] < sell) {
profit += (sell - purchase);
purchase = prices[i];
}
sell = prices[i];
}
if (sell > purchase)
profit += (sell - purchase);
return profit;
}
}
//贪心(今天卖了赚钱就卖,卖了亏本就不卖)
class Solution {
public int maxProfit(int[] prices) {
int profit = 0;
for (int i = 1; i < prices.length; i++) {
profit += Math.max(prices[i] - prices[i-1], 0);
}
return profit;
}
}
总结
贪心算法代码量少阿
Leetcode 55. 跳跃游戏
解题思路
遍历所有到cover的元素能覆盖到的范围,如果能大于等于最后一个元素,则返回true
代码
java
class Solution {
public boolean canJump(int[] nums) {
int cover = 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;
}
}
总结
暂无
Leetcode 45. 跳跃游戏 II
题目: 45. 跳跃游戏 II
解析: 代码随想录解析
解题思路
每次更新下一轮覆盖的最大范围。当走完当前覆盖范围的时候,step++。
代码
java
class Solution {
public int jump(int[] nums) {
if (nums.length == 1) return 0;
int step = 0;
int curCover = 0;
int nextCover = 0;
for (int i = 0; i < nums.length; i++) {
nextCover = Math.max(nextCover, i + nums[i]);
if (i == curCover) {
step++;
curCover = nextCover;
if (curCover >= nums.length - 1) break;
}
}
return step;
}
}
总结
暂无