java - 使用 for 循环搜索值和

标签 java arrays loops for-loop unique

问题是这样的:

给定一个非空整数数组,除一个元素外,每个元素出现两次。找到那一个。

输入:[4,1,2,1,2]
输出:4

我的代码是:

public static int singleNumber(int[] nums) {
     int answer = 0;
        for (int i =0; i<nums.length-1; i++) {
            for(int j = i+1; j<nums.length; j++) {
                if(nums[i] != nums[j]) {
                 answer = nums[i];      //this should be where I am wrong.
                }
            }
        }
        return answer;
    }

我知道输出是 4,现在它会变成 1。 我正在尝试弄清楚如何在找到后不更改找到的值。

最佳答案

逻辑是错误的——你的内部循环找到了数组中不是唯一数字的每个数字。

我会维护一个 Set 来跟踪我遇到的数字。第一次遇到数字时,将其添加到 Set 中。第二次遇到它时,将其从 Set 中删除。遍历数组后,您将得到一个包含单个元素的 Set,这就是您的答案:

public static int singleNumber(int[] nums) {
    Set<Integer> unique = new HashSet<>();
    for (int num : nums) {
        // add returns true if num is indeed new to unique
        if (!unique.add(num)) {
            unique.remove(num);
        }
    }

    return unique.iterator().next();
}

关于java - 使用 for 循环搜索值和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51070885/

相关文章:

java - 找不到路径 PostgreSQLContainer testContainers

java - 如何解析不完整的 JSON 之类的字符串

Java、传值、引用变量

javascript--遍历json并在最后添加累加数

java - 有人可以告诉我我做错了什么吗?通过 LinkedList 进行计数和循环

java - 没有 Java 的 Nightwatch.js

PHP - 如何按总和值对这个多维数组进行排序?

arrays - SQLite 从表中删除字段与数组中的对象不匹配的表

python - 如何循环遍历 zip() 函数的一个元素两次 - Python

java - Java 增强 for 循环中的隐式语句