求画红圈的部分如何理解 (代码标注的那里)?-灵析社区

我头像最美

![780c12d9ede2d7ceffcae2190c59572.jpg](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/d949821e8ae58a82d6251d9052d55227.png)![48006073f7f9a1382e8f75ceae1f0a4.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/7d6a2a2985ff5aaf1bd13b648399cbf0.png) 题目: 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 示例 2: 输入:nums = [3,2,1,0,4] 输出:false 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。 提示: 1 =0;i--) { if(nums[i]>=numsSize-1-i) **这里的numsSize-1-i怎么理解?** { numsSize=i+1; **这里怎么理解?** } } if(nums[0]>=numsSize-1) return true; else return false; }

阅读量:12

点赞量:0

问AI
你好,这个答案的解题思路是这样的 for(i=numsSize-2;i>=0;i--) { if(nums[i]>=numsSize-1-i) { numsSize=i+1; } } 假设一共有10个数,那就从第九个数开始看, 1.如果第九个数大于等于1,第九个数就能跳转到第10个数。能跳到第十个数的肯定能跳到第九个数,在第九个数大于1的情况下,能跳到第九个数的肯定也能能跳到第十个数,所以不妨把第十个数移走,看其他数能不能跳到第九个数即可 2.如果第九个数的值小于1,跳到第九个数的路径直接排除,看第八个数能不能跳到第十个数就行。 如此循环,一直循环到判断第一个数能否跳到下一位为止 nums[i]>=numsSize-1-i,是判断当前坐标能否跳到最后一个数上 numsSize=i+1; 如果能跳到,可以理解为忽略第十个数,直接看成九个数,后面直接看其他数能不能跳到第九个数上就好了