You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组最小跳跃次数问题代码错误排查及思路纠正求助

数组最小跳跃次数问题代码错误排查及思路纠正求助

问题描述

给定一个包含N个整数的数组arr[],每个元素代表从该位置可以向前跳跃的最大长度。也就是说,如果arr[i] = x,那么我们可以跳跃任意距离y满足y ≤ x。

要求找到到达数组末尾的最小跳跃次数(从第一个元素开始)。如果某个元素是0,则无法通过该元素。注意:如果无法到达数组末尾,返回-1。

示例1

输入:
N = 11
arr[] = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9}

输出:3

解释:
第一次从第1个元素跳到第2个元素(值为3)。接着从这里跳到第5个元素(值为9),最后从这里跳到数组末尾。

示例2

输入:
N = 6
arr = {1, 4, 3, 2, 6, 7}

输出:2

解释:
先从第1个元素跳到第2个元素,然后直接跳到数组末尾。

我的代码

class Solution{
public:
int minJumps(int arr[], int n){
// Your code here
int jump=0;
int count=0;
for(int i=2;i<=n;i++){
if(arr[i]%i==0){
count++;
if(arr[i]!=i){
count++;
}
}
if(count==2){
jump++;
}
}
return jump;
}
};

我的思路及疑惑

我误解了题目,以为要求跳到数组中的特定质数位置来统计跳跃次数。我的思路是这样的:

  • 首先想找出质数,所以遍历数组时用了for(int i=2;i<=n;i++)(这里n是数组的大小)
  • 如果arr[i]%i==0,就进入if块,把count加1(count初始化为0)
  • 又检查如果arr[i]!=i,就再把count加1,觉得这样能排除非质数的情况
  • 如果count等于2,就判定这是质数,把jump加1(jump初始化为0)
  • 最后返回jump,但144个测试用例一个都没通过😥

有没有人能帮我解释一下我的代码哪里错了?


备注:内容来源于stack exchange,提问作者Shrish Bhargav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:19:36