首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

跳跃游戏 II

换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 <= j <= nums[i] i + j < n 返回到达 nums[n - 1] 的最小跳跃次数。...示例 1: 输入: nums = [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是2。从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。...nums.length <= 104 0 <= nums[i] <= 1000 题目保证可以到达 nums[n-1] 如果我们「贪心」地进行正向查找,每次找到可到达的最远位置,就可以在线性时间内得到最少的跳跃次数...我们从左到右遍历数组,到达边界时,更新边界并将跳跃次数增加 1。...如果访问最后一个元素,在边界正好为最后一个位置的情况下,我们会增加一次「不必要的跳跃次数」,因此我们不必访问最后一个元素。

10410

LeetCode-55-跳跃游戏

# LeetCode-55-跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。...但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。...# 解题思路 方法1、贪心: 对于数组中任意的一个位置y,如何判断是否可达 根据题意,只要存在一个位置x,它本身可达,并且它跳跃的最大长度为x+nums[x],这个值>=y,即x+nums[x]>=y,...这些连续的位置都可以到达 于是我们可以动态记录最远可以到达的位置,对于每一个起跳点,更新对应的最远可以到达的位置 即把每个能起跳的点都试一次,使用max表示最远能够到达的点,超过max就不能跳了,直接进行返回 # Java

9410

跳跃游戏

数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。...但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。...对于当前遍历到的位置x,如果它在最远可以到达的位置的范围内,那么我们就可以从起点通过若干次跳跃到达该位置,因此我们可以用x+ nums[x]更新最远可以到达的位置。...我们用1加上它可以跳跃的最大长度3,将最远可以到达的位置更新为4。由于4大于等于最后一个位置4,因此我们直接返回True 。...我们再来看看题目中的示例二 [3, 2, 1, 0, 4] 我们—开始在位置0,可以跳跃的最大长度为3,因此最远可以到达的位置被更新为3; 我们遍历到位置1,由于1≤3,因此位置1可达,加上它可以跳跃的最大长度

22230

算法题之跳跃游戏

上期新建了一个专栏并发布了一道算法题,今天继续,今天给大家带来的题目名为“跳跃游戏”。题目如下: 给定一个非负整数数组,你最初位于数组的第一个位置。...数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。...如果数组中存在0的情况下,要跳到最后必须满足以下条件,从0前边的某一个位置上开始跳跃一定能跳过这个0才可以。...游戏者所在的位置的数值一定要大于0所在位置索引值与当前位置索引值的距离差。...canJump0 = false; //进行判断,将此位置之前数字进行判断,只要有一个能满足条件就可以跳过这个0 for (var j = i - 1; j >= 0; --j) { // 游戏者所在的位置的数值一定要大于

66551
领券