网站建设与管理案例柳洪轶,济宁网架公司,湖北省建设主管网站,太原cms建站Leetcode 122. 买卖股票的最佳时机 II
题目链接 122 买卖股票的最佳时机 II
本题目设计的还是比较巧妙的#xff0c;把最终的利润分为每天的利润就解决了#xff08;贪心#xff09;#xff0c;每天的利润就是前一天买进#xff0c;后一天卖出#xff0c;转化到代码上就…
Leetcode 122. 买卖股票的最佳时机 II
题目链接 122 买卖股票的最佳时机 II
本题目设计的还是比较巧妙的把最终的利润分为每天的利润就解决了贪心每天的利润就是前一天买进后一天卖出转化到代码上就是p[i]-p[i-1]我们要取得最大利润就需要最起码让每天的利润不为负数所以我们只需要取每天大于0的利润加起来就能得到最终的最大利润了。下面上代码
class Solution {
public:int maxProfit(vectorint prices) {int result 0;for(int i1;iprices.size();i){result max(prices[i]-prices[i-1],0);}return result;}
};
Leetcode 55. 跳跃游戏
题目链接 55 跳跃游戏
本题目之前在dp专题做过两个差不多的本题目比较简单直接说贪心思路了取最大范围在i点时最大范围能否到达最后一个点就可以判断了。
下面直接上代码
class Solution {
public:bool canJump(vectorint nums) {int court 0;if(nums.size() 1){return true;}for(int i0;icourt;i){//i 每次移动只能在 cover 的范围内移动每移动一个元素cover 得到该元素数值新的覆盖范围的补充让 i 继续移动下去。court max(court,inums[i]);if(courtnums.size()-1){return true;}}return false;}
};
Leetcode 45. 跳跃游戏 II
题目链接 45 跳跃游戏 II
本题目还是比较有按难度的首先说一下贪心思路我们用每步最大的覆盖范围来取得最少的步数。如果移动下标达到了当前这一步的最大覆盖最远距离了还没有到终点的话那么就必须再走一步来增加覆盖范围直到覆盖范围覆盖了终点。这时我们必须走的下一步必须是在第一步走的范围内点的能走的最大的覆盖范围这里用代码表示的话就是 nextDistance max(nums[i] i, nextDistance)
当移动下标达到了当前覆盖的最远距离下标时
如果当前覆盖最远距离下标不是是集合终点步数就加一还需要继续走。如果当前覆盖最远距离下标就是是集合终点步数不用加一因为不能再往后走了。
下面上代码
class Solution {
public:int jump(vectorint nums) {if(nums.size()1){return 0;}int result;int curDistance 0;int nextDistance 0;for(int i0;inums.size();i){nextDistance max(nums[i]i,nextDistance);//在遍历最大覆盖范围时收集下一步最大覆盖范围if(icurDistance){result;//步数curDistance nextDistance;//更新最大范围if(nextDistancenums.size()-1){//覆盖范围到终点就结束break;}}}return result; }
};
晚上学六级 end