AI 应用架构讲三层能力结构详解
2026/5/2 21:59:35
给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中每个位置的元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达数组的最后一个下标,能则返回true,不能则返回false。
本题仅需验证“能否到达最后一个下标”的可行性,无需罗列具体跳跃路径,因此选择贪心算法是最优解(相比动态规划,贪心算法时间复杂度相同且空间复杂度更低)。
max_length,表示当前能到达的最大索引位置;i:i超过max_length,说明无法到达该位置,直接返回false;max_length为max(max_length, i + nums[i])(当前能到达的最远位置 = 历史最远位置 和 当前位置可跳最远位置 的较大值);max_length已≥数组最后一个索引,说明能到达终点,直接返回true;max_length是否≥数组最后一个索引(适配数组长度为1等边界场景)。classSolution{public:boolcanJump(vector<int>&nums){intn=nums.size();intmax_length=0;for(inti=0;i<n;i++){if(i>max_length)returnfalse;max_length=max(max_length,i+nums[i]);if(max_length>=n-1)returntrue;}returnmax_length>=n-1;}};n为数组长度;max_length、n、i三个变量)。