你好,这个答案的解题思路是这样的 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; 如果能跳到,可以理解为忽略第十个数,直接看成九个数,后面直接看其他数能不能跳到第九个数上就好了