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

如何判断整数数组是否存在重复元素?现有实现代码运行异常如何解决

错误原因
  • 核心逻辑缺陷:代码中每次元素比较都会覆盖hasDuplicates的取值,即便前面已经找到重复元素,后续遇到不相等的元素对时,仍会将hasDuplicates重置为false。以你给出的测试数组为例,最后一次执行的比较是input[3] = 4和input[4] = 1,二者不相等,因此最终hasDuplicates被赋值为false,和实际结果不符。
  • 缺少提前终止逻辑:找到重复元素后无需继续遍历剩余元素,当前代码会执行全部比较,存在不必要的性能损耗。
修正后实现

双层循环版本(兼容原实现思路)

int[] input = {1, 2, 3, 4, 1};
boolean hasDuplicates = false;

outerLoop: for (int i = 0; i < input.length; i++) {
    for (int j = i + 1; j < input.length; j++) {
        if (input[i] == input[j]) {
            hasDuplicates = true;
            break outerLoop; // 找到重复直接跳出全部循环
        }
        // 无需处理不相等的分支,不相等时保持原有状态即可
    }
}

哈希集优化版本(时间复杂度更低)

数组长度较大时推荐使用该方案,平均时间复杂度为O(n):

import java.util.HashSet;
import java.util.Set;

public class DuplicateCheck {
    public static void main(String[] args) {
        int[] input = {1, 2, 3, 4, 1};
        boolean hasDuplicates = false;
        Set<Integer> seen = new HashSet<>();
        for (int num : input) {
            if (!seen.add(num)) { // HashSet的add方法返回false代表元素已存在
                hasDuplicates = true;
                break;
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:15:08