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

65 阅读1分钟

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

122. 买卖股票的最佳时机 II

题目链接:122. 买卖股票的最佳时机 II

  • 局部最优:低值买入,高值卖出 (追涨杀跌)
  • 总体最优:利润最高
  • 动态规划法可能更加麻烦,贪心法可以更直观直接算出。

55. 跳跃游戏

题目链接:55. 跳跃游戏

  • 局部最优:跳到一个当前步下跳过去后能跳到最远的点
  • 总体最优:跳得最远,最远都没有到达终点,那么就返回false
  • 使用一个变量 cover来存储能跳的最远值
  • 还是要遍历每个节点
  •  class Solution {
     public:
         bool canJump(vector<int>& nums) {
             int jumpLen = 0;
     ​
             for(int i = 0; i <= jumpLen && i < nums.size(); i++) {
                 jumpLen = max(jumpLen, i + nums[i]);
             }
             return jumpLen >= nums.size() - 1;
         }
     };
    

45. 跳跃游戏 II

题目链接:45. 跳跃游戏 II

  • 局部最优:跳到一个当前步下跳过去后能跳到最远的点
  • 总体最优:跳得最远,最远都没有到达终点,那么就返回false
  • 使用两个变量 curDistance,maxDistance,分别代表第一步和第二步能够走出的距离