只出现一次的数字

简介: 只出现一次的数字

 问题内容:

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

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


相关文章
|
3月前
|
程序员 编译器 C++
【实战指南】C++ lambda表达式使用总结
Lambda表达式是C++11引入的特性,简洁灵活,可作为匿名函数使用,支持捕获变量,提升代码可读性与开发效率。本文详解其基本用法与捕获机制。
136 46
|
NoSQL Redis Windows
win10下Redis安装、启动教程
win10下Redis安装、启动教程
|
Dart 前端开发 开发者
【Flutter前端技术开发专栏】Flutter中的性能分析工具Profiler
【4月更文挑战第30天】Flutter Profiler是用于性能优化的关键工具,提供CPU、GPU、内存和网络分析。它帮助开发者识别性能瓶颈,如CPU过度使用、渲染延迟、内存泄漏和网络效率低。通过实时监控和分析,开发者能优化代码、减少内存占用、改善渲染速度和网络请求,从而提升应用性能和用户体验。定期使用并结合实际场景与其它工具进行综合分析,是实现最佳实践的关键。
665 0
【Flutter前端技术开发专栏】Flutter中的性能分析工具Profiler
|
前端开发
Mac电脑如何使用WinRAR
Mac电脑如何使用WinRAR
902 0
|
XML 存储 文件存储
LabVIEW使用自定义模板和示例项目来开发LabVIEW项目
LabVIEW使用自定义模板和示例项目来开发LabVIEW项目
157 0
|
存储 Java Nacos
Nacos服务注册与发现源码剖析
本文通过Nacos源码了解服务注册与发现原理。
314 0
Nacos服务注册与发现源码剖析
|
Kubernetes Shell Perl
文档解读 | K8S中的Pod和容器配置(一)
如何给运行在Kubernetes(K8S) Pod中的容器定义环境变量、命令行和参数? 给运行在Kubernetes Pod中的容器定义环境变量 开始之前 必须有一个Kubernets集群,和一个能和集群沟通的kubectl命令行工具。
5878 0
|
机器学习/深度学习 人工智能 搜索推荐
AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵
本文讲解音频检索技术及其广泛的应用场景。以『听曲识歌』为例,技术流程为具对已知歌曲抽取特征并构建特征向量库,而对于待检索的歌曲音频,同样做特征抽取后进行比对和快速匹配。
4477 1
AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵
|
算法 Java BI
算法竞赛入门【码蹄集新手村600题】(MT1551-1600)
算法竞赛入门【码蹄集新手村600题】(MT1551、MT1552、MT1553、MT1554、MT1555......MT1600)
529 1
算法竞赛入门【码蹄集新手村600题】(MT1551-1600)