贪心之练习

学习安排根据《代码随想录》

贪心基础理论知识:

贪心的思想:局部选优===》全局最优

贪心的套路:先用贪心模拟+是否能举出反例===》如果没有反例===》用贪心

【ps:也可以说没有套路~就是莽】

练习:

leetcode 55 跳跃游戏 【略】

leetcode 45 跳跃游戏 二

模拟:

当前位置可到达的所有区域,在该区域内,每走一步,看是否下一次的覆盖区域能涵盖终点

,一旦涵盖,走到当前位置的步数+1就是最小步数。

代码:

class Solution {
public:
    int jump(vector<int>& nums) {
      
       if(nums.size()==1)return 0;
       int curDis=0;//当前最远距离下标
       int nextDis=0;//下一步最远距离下标
       int ans=0;
       for(int i=0;i<nums.size();i++)
       {
           nextDis=max(nums[i]+i,nextDis);//每走一步都要更新最远距离,尽快找到达到终点的位置
           if(i==curDis)//如果i已经到达了最远的覆盖位置
           {
               if(curDis!=nums.size()-1)
               {
                   ans++;
                   curDis=nextDis;
                   if(nextDis>=nums.size()-1)//如果i没到达最远覆盖位置时的下一次覆盖包括了终点
//那到达了最远位置后,肯定也覆盖了终点,所以没有影响
                   break;
               }
               else break;//如果最远位置等于或者超过了终点
           }
       }
       return ans;     
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值