毒蘑菇

作者:克拉克华
链接:https://www.nowcoder.com/discuss/507047?type=all&order=time&pos=&page=1&channel=-1&source_id=search_all_nctrack
来源:牛客网

从起点开始接下来有N个方块,相邻方块间的距离都为1,每个方块上有增加体力的食用蘑菇或减少体力的毒蘑菇,蘑菇带来的体力改变是已知的。一个人初始体力为m,每次可以往前跳任意个方块,体力耗尽就会死掉。每跳一次消耗的体力与跳的距离成正比,比例为1。问这个人能否跳到终点,如果能,求可能剩余的最大体力。

该题是leetcode 55. 跳跃游戏  的变形

int[] arr = {1, 2, 3, -2, 5);

题目的意思是:
初始体力为m,最终要跳到终点,终点应该是跳过 下标arr.length-1,
也就是至少要跳到arr.length下标处。

重组一个数组:// 个人习惯,也可以直接用arr
int[] nums = {m, 1, 2, 3, -2, 5, 0}; // 在arr前加了个m,在arr后加了个0

public int jump(int[] nums, int m) {
        int currFurthest = 0;
        int n = nums.length;
        int res = -1;

        for (int i = 0; i < n-1; i++) {
            currFurthest = Math.max(currFurthest, i + nums[i]);
            if (currFurthest <= i) {
                break;
            }

            if (currFurthest >= n-1) {
                res = Math.max(res, currFurthest - (n-1));
            }
        }

        return res;
    }
返回结果是-1,则不能跳到终点。
返回结果是非负数,则表示跳到终点后还剩余的最大体力值。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值