只出现一次的数字

简介: 只出现一次的数字

题目

题目:只出现一次的数字


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


说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?


示例 1:


输入: [2,2,1]

输出: 1


示例 2:


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

输出: 4


题解:


本题可以直接使用异或(^,相同为0,不同为1)去解决,先说方案,异或数组中的所有数,最后剩下的就是只出现一次的数


分析:


a^a = 0 0^b = b ,所以 a^a ^ b = b


拿个数举例子:


3 ^ 3 = 0011^0011 = 0000 = 0


0 ^ 2 = 0000^0010 = 0010 = 2


所以 3^3 ^2 = 2


最后所有出现偶数次的数异或后都成0了,0在和出现一次的(其实出现奇数次也是一样)异或,得到的就是我们要的那个数了


代码:


class Solution {
    public int singleNumber(int[] nums) {
        //用异或 ,因为 a^b^a = b 
        int res = 0;
        for (int num : nums) {
            //所以
            res ^= num;
        }
        return res;
    }
}


以上就是只出现一次的数字【LeetCode】的全部内容

相关文章
|
Linux API
嵌入式Linux中的 gpio、gpiod基本分析
嵌入式Linux中的 gpio、gpiod基本分析
1204 0
|
11月前
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
501 6
|
12月前
|
机器学习/深度学习 人工智能 并行计算
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。
490 5
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
|
人工智能 自然语言处理 机器人
智能语音机器人底层系统设计逻辑机器人源码系统逻辑
简介: — 1 —智能客服背景智能语音客服机器人是在传统的客服系统基础上,集成了语音识别、语义理解、知识图谱、深度学习等多项智能交互技术,能准确理解用户的意图或提问,再根据丰富的内容和海量知识图谱,给予用户满意的回答。目前已广泛应用于金融、保险、汽车、房产、电商、政府等多个领域。
|
7月前
|
存储
微信附近人提取工具,附近人微信号采集,用xposed实现【仅供学习参考】
主Hook模块拦截微信附近人界面,数据结构保存用户信息,数据导出模块实现CSV格式存储,以及Xposed框架入口配置。
|
缓存 监控 Java
优化Spring Boot应用的数据库访问性能
优化Spring Boot应用的数据库访问性能
|
数据采集 编解码 数据可视化
空间单细胞|10x Visium数据分析、可视化与整合(1)
空间单细胞|10x Visium数据分析、可视化与整合(1)
|
Java Shell Android开发
android 权限申请
android 权限申请
329 5
|
缓存 NoSQL Java
Spring Boot整合Redis缓存的最佳实践
Spring Boot整合Redis缓存的最佳实践
|
存储 人工智能 自然语言处理
利用Streamlit 和 Hugging Face 创建免费AI故事机
利用Streamlit 和 Hugging Face 创建免费AI故事机
480 0