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

我解HackerRank中等难度Pairs题的解法错误出在哪里?

代码错误排查与修正方案

你的代码存在以下三个核心问题,导致用例通过率低:

  • 主逻辑覆盖不全:仅在相邻元素差值小于k时检查i+1位置和前置元素的配对,大量跨多个位置的合法配对无法被触发检查。例如数组[1,3,5]、k=4的场景,1和5的差值符合要求,但你的代码遍历全程都不会识别到该配对,最终返回错误结果0。
  • CompareWithPreviousValues方法循环逻辑错误:循环中同时对遍历下标i自减、对间距j自增,两个变量同步变化导致根本无法完整遍历当前元素的所有前置元素,大部分历史元素都会被直接跳过。
  • 匹配到单条结果就直接返回导致统计缺失:如果存在重复元素,例如数组[1,1,2,2]、k=1的场景,合法配对共有4个,但你的方法匹配到第一个配对就直接返回,仅能统计到1个结果。

修正方案

推荐用逻辑更清晰的双指针法实现,时间复杂度和你原设计一致,为排序的O(nlogn),空间复杂度O(1):

public static int pairs(int k, List<int> arr)
{
    arr.Sort();
    int result = 0;
    int left = 0;
    int right = 1;
    
    while (right < arr.Count)
    {
        int diff = arr[right] - arr[left];
        if (diff == k)
        {
            result++;
            left++;
            right++;
            // 若题目允许重复元素,可添加以下代码处理连续重复的情况
            while (right < arr.Count && arr[right] == arr[right - 1] && arr[left] == arr[left -1])
            {
                result++;
                left++;
                right++;
            }
        }
        else if (diff < k)
        {
            right++;
        }
        else
        {
            left++;
            // 避免左右指针重合
            if (left == right)
            {
                right++;
            }
        }
    }
    return result;
}

内容的提问来源于stack exchange,提问作者David Oganov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:54:05