只出现一次的数字

简介: 只出现一次的数字

 问题内容:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

示例1:

输入: [2,2,1]

输出: 1

示例2:

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

输出: 4

方法一:暴力求解法

这是最直观的一种求法,每次取数组中的一个数,通过计数来判断这个数的个数是否为1,有则返回这个元素,无则返回-1。

代码实现:

public static int appearOneNumber1(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            int count = 0;
            int temp = arr[i];
            for (int j = 0; j < arr.length; j++) {
                if (arr[j] == temp){
                    count++;
                }
            }
            if (count == 1){
                return temp;
            }
        }
        return -1;
    }

image.gif

此方法虽然直观,但是代码麻烦,运行时间也相对下面求法长。

方法二:异或求解法

异或的特点是:

1、n ^ n = 0;即两个相同的数字异或是0

2、0 ^ n = n;即0和任何数字进行异或,结果就是那个任何数字。

因此将数组遍历异或,最终的结果就是个数为一的数。

代码实现:

public static int appearOneNumber(int[] arr){
        int temp = 0;
        //此处for循环为增强型for循环
        for (int i : arr) {
            temp ^= i;
        }
        return temp;
    }

image.gif


相关文章
|
4天前
|
算法 前端开发
619. 只出现一次的最大数字
619. 只出现一次的最大数字
22 0
|
4天前
|
算法 C语言
只出现一次的数字
只出现一次的数字
|
4天前
|
存储 C++ 容器
Acwing.75 和为S的两个数字
Acwing.75 和为S的两个数字
|
4天前
|
C++
c++数字
c++数字
23 0
|
4天前
|
算法 C++
只出现一次的数字(C++)
只出现一次的数字(C++)
20 0
|
11月前
137. 只出现一次的数字 II
137. 只出现一次的数字 II
35 0
|
12月前
|
编解码 人工智能 自然语言处理
SIGGRAPH2023|DreamFace:一句话生成 3D 数字人?
SIGGRAPH2023|DreamFace:一句话生成 3D 数字人?
145 0
|
12月前
7-4 特殊数字
7-4 特殊数字
59 0