只出现一次的数字

简介: 只出现一次的数字

 问题内容:

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

示例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


相关文章
|
2月前
|
算法 前端开发
619. 只出现一次的最大数字
619. 只出现一次的最大数字
32 0
|
7天前
|
容器
只出现一次的数字
只出现一次的数字
8 0
|
24天前
|
人工智能 安全 算法
数字文盲
在数字时代,避免边缘化的关键是正视挑战、持续学习数字技能、关注伦理安全和推广数字素养教育。从基础操作到数据分析,提升数字素养能帮助我们适应变革,同时保护隐私和安全,确保在科技发展中不落伍,共建包容的数字社会。
|
2月前
|
存储 算法 C++
c++数字
c++数字
19 1
|
2月前
|
存储 C++ 容器
Acwing.75 和为S的两个数字
Acwing.75 和为S的两个数字
|
2月前
|
算法 C++
只出现一次的数字(C++)
只出现一次的数字(C++)
22 0
137. 只出现一次的数字 II
137. 只出现一次的数字 II
37 0
|
编解码 人工智能 自然语言处理
SIGGRAPH2023|DreamFace:一句话生成 3D 数字人?
SIGGRAPH2023|DreamFace:一句话生成 3D 数字人?
159 0