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

题解

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

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

数据范围

1 <= nums.length <= 3 * 104

-3 * 104 <= numsi <= 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;
    }
}

思路

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

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

相关推荐
handler0110 分钟前
【算法】并查集(普通/扩展/带权)模板与例题
数据结构·c++·笔记·算法·c·图论·查并集
嵌入式ZYXC26 分钟前
第1篇:《面试题:画一个STM32最小系统电路,每个元件的作用》
stm32·单片机·嵌入式硬件·面试·职场和发展
qq74223498426 分钟前
从“感知”到“决断”:测评百度伐谋产业决策智能体的端到端推理与行动机制
人工智能·算法·百度·大模型·运筹优化
huohaiyu1 小时前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
浮芷.1 小时前
鸿蒙PC端 TTS 并发调用问题详解:资源竞争与队列管理
算法·华为·开源·harmonyos·鸿蒙·鸿蒙系统
装不满的克莱因瓶2 小时前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络
Lsk_Smion2 小时前
力扣实训 _ [994].腐烂的橘子/图论
算法·leetcode·图论
轻微的风格艾丝凡2 小时前
两电平三相VSC整流模式从不控整流平滑切换至有源整流调试记录
算法·dsp·c2000
dongf20192 小时前
R语言KNN算法
算法·数据分析·r语言
嵌入式ZYXC2 小时前
第2篇:《面试题:LDO和DC-DC的区别?分别用在什么场景?》
stm32·单片机·嵌入式硬件·面试·职场和发展