Leetcode 热题HOT 100 55.跳跃游戏(C++ 贪心)

题目

刚开始做这道题是真的难到博主了,写了很多,弄得忒复杂,我边写还边嘲讽这题是个什么玩意儿,但当我看来官方题解后,恍然大悟,我是个什么玩意儿,真的很气愤,为什么自己想不到这样的题解,呜呜呜,枯了枯了。

好了,让我们进入正题吧:

题目解析

首先这是一道贪心的题,我们要判断从初始数组的位置能否到达最后一个位置的下标处,我们可以假设y是数组中任意一个我们需要到达的下标处,此时我们可以从初始下标0处开始遍历数组,去寻找是否存在一个数的下标为x我们可以到达,如果存在这样的数x那么x+nums[x]就是该数可以跳跃的最大距离,只要最大跳跃距离>=y,即可返回true,若遍历完数组还没有找到这样的下标,则返回false,即可。

代码实现

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

总结

这道题就是这样的,如果能有这样的一种思想,那么题解就会很简单,不会写很多,理解起来也很容易,反正博主就是觉得,没事多多刷题,开扩一下自己的思维其实是很重要的!!!大家刷题不要停,加油哦!冲冲冲!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值