(leetcode)力扣100 96.只出现一次的数字(位运算)

题解

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

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

数据范围

1 <= nums.length <= 3 * 104

-3 * 104 <= nums[i] <= 3 * 104

除了某个元素只出现一次以外,其余每个元素均出现两次。

测试用例

示例1

java 复制代码
输入:nums = [2,2,1]

输出:1

示例 2 :

java 复制代码
输入:nums = [4,1,2,1,2]

输出:4

示例3

java 复制代码
输入:nums = [1]

输出:1

题解(时间On,空间O1)

java 复制代码
class Solution {
    public int singleNumber(int[] nums) {
        int single = 0;
        for (int num : nums) {
            single ^= num;
        }
        return single;
    }
}

思路

这道题怎么说呢,要是想到了位运算,确实特别简单,想不到的话抓耳挠腮(博主)。

因为异或满足这个规律,所以我们只需要把数组里的数按顺序异或一次,最后剩下的就是只出现过一次的数。

相关推荐
Tisfy2 小时前
LeetCode 1622.奇妙序列:懒更新
数学·算法·leetcode·题解·设计
無限進步D2 小时前
高精度算法 cpp
c++·笔记·算法·入门
qyzm2 小时前
AtCoder Beginner Contest 449
数据结构·python·算法·贪心算法
liuyao_xianhui2 小时前
优选算法_判断字符是否唯一_C++
java·开发语言·数据结构·c++·算法·链表
Barkamin2 小时前
希尔排序的简单实现
数据结构·算法·排序算法
Eward-an2 小时前
CKA/CKS认证通关复盘:实验环境搭建避坑指南,版本雷区+高效练习全解析
算法
Flying pigs~~2 小时前
自然语言处理(NLP)开胃小菜
人工智能·算法·自然语言处理·大模型·文本分析处理
Yupureki2 小时前
《C++实战项目-高并发内存池》7.大块内存的申请与释放
服务器·c语言·开发语言·c++·算法·哈希算法
2401_889884662 小时前
模板代码模块化设计
开发语言·c++·算法