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

Google Foobar挑战代码过8测,隐藏用例失败求问题排查

问题原因

你编写的代码核心问题出在计数标记的实现逻辑上:

  • 你定义了长度为1000的flag数组作为计数标记,默认输入列表的元素都是取值在0~999之间的非负整数,但题目并没有限制整数的取值范围。当测试用例包含负数、大于等于1000的正整数时,执行flag[data[i]]会直接触发数组越界异常,导致用例执行失败。
  • 补充验证:如果隐藏用例包含比如data=[-1, 2, -1, 3]、n=1这类输入,你的代码会直接崩溃无法返回结果。

修复方案

把固定长度的数组标记替换为哈希表统计元素出现次数,即可覆盖所有整数场景,参考实现如下:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public static int[] solution(int[] data, int n) {
    // 统计每个元素的出现次数
    HashMap<Integer, Integer> countMap = new HashMap<>();
    for (int num : data) {
        countMap.put(num, countMap.getOrDefault(num, 0) + 1);
    }
    // 按原顺序筛选符合要求的元素
    List<Integer> resultList = new ArrayList<>();
    for (int num : data) {
        if (countMap.get(num) <= n) {
            resultList.add(num);
        }
    }
    // 转换为int数组返回
    int[] result = new int[resultList.size()];
    for (int i = 0; i < result.length; i++) {
        result[i] = resultList.get(i);
    }
    return result;
}

内容的提问来源于stack exchange,提问作者Ayan Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:39:03