[leetcode-45]Jump Game II(java)

来源:互联网 发布:淘宝代销保证金能退吗 编辑:程序博客网 时间:2024/05/16 09:13

问题描述:https://leetcode.com/problems/jump-game-ii/

分析:这道题最开始使用DP算法,发现TLE,然后归纳代码发现,没有必要分配额外的空间,而只需要保留一个空间的左边界和右边界即可。当这个右边界小于target时,从左边界遍历到右边界,查看这一轮里面右边界最多延伸到什么地方?当然,如果新的右边界小于等于原来的右边界,那么jump game就困死在了这一轮,反之,就开始下一轮,开始部分由end+1开始。
这种思想有些像BFS,不是嘛

代码如下:9ms

public class Solution {    public int jump(int[] nums) {        int level = 0;        int start = 0,end = 0;        int target = nums.length - 1;        while(end<target){            level++;            int value = start;            for(int i = start;i<=end;i++){                value = Math.max(value,nums[i]+i);            }            if(value<=end)//never has chance to reach last                return -1;            start = end+1;            end = value;        }        return level;    } }
0 0
原创粉丝点击