代码随想录算法训练营第三十二天| ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

买卖股票的最佳时机II 

题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode)

思路:本题的贪心法在于用不选择亏钱的买卖,某天能赚钱就一定出手,每天都赚钱从而获得总体的最大利益。具体是计算每一天的利润后,如果大于0,就记入总利益。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<int> profit(prices.size()-1);
        for(int i=1;i<prices.size();i++){
            profit[i-1]=prices[i]-prices[i-1];
        }
        int count=0;
        for(int j=0;j<profit.size();j++){
            if(profit[j]>0)count+=profit[j];
        }
        return count;
    }
};

显然这里存在一个更优化的写法

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int profit = 0;
        for (int i = 1; i < prices.size(); i++) {
            int tmp = prices[i] - prices[i - 1];
            if (tmp > 0) profit += tmp;
        }
        return profit;
    }
};

作者:Krahets
链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/solutions/12625/best-time-to-buy-and-sell-stock-ii-zhuan-hua-fa-ji/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

跳跃游戏 

题目链接:55. 跳跃游戏 - 力扣(LeetCode)

思路:k表示可以最远可以到达的距离 ,当遍历到的点已经超出最远能到达的点,说明不能到达终点,如果一直跳到最终点,证明能走通。

 我最开始的想法是每一个只跳一步,遇到0时开始检查前面的点,如果长度能跳过0,则能继续遍历,否则退出遍历返回false,但这个问题在于终点0和中途的0是不同的,中途的0必须跨过去,但是终点的0只需要跳到上面即可,因此不是很好想。

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int k = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (i > k) return false;
            k = max(k, i + nums[i]);
        }
        return true;
    }
};

作者:Ikaruga
链接:https://leetcode.cn/problems/jump-game/solutions/24322/55-by-ikaruga/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

跳跃游戏II 

题目链接:45. 跳跃游戏 II - 力扣(LeetCode)

思路:首先count记录走的步数,k表示增加一步到达的最远范围,end表示不增加步数的情况下能达到的最大范围。

这里为什么for循环判断条件是nums.size()-1而不是nums.size()呢,原因在于:

况且规定本题的测试用例一定是可以达到终点的。

class Solution {
public:
    int jump(vector<int>& nums) {
        int count=0;
        int k=0;
        int end=0;
        for(int i=0;i<nums.size()-1;i++){
            k=max(k,i+nums[i]);
            if(i==end){
                end=k;
                count+=1;
            }

        }
        return count;
    }
};

 

posted @   SandaiYoung  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示