136. 只出现一次的数字
创始人
2025-06-01 20:01:40
0

总结

异或位运算方法

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

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

示例1:

输入:nums = [2,2,1]
输出:1

示例2:

输入:nums = [4,1,2,1,2]
输出:4

示例3:

输入:nums = [1]
输出:1

提示:

  • 1 <= nums.length <= 3 * 104
  • -3 * 104 <= nums[i] <= 3 * 104
  • 除了某个元素只出现一次以外,其余每个元素均出现两次。

方法:位运算

思路与算法

异或运算有以下三个性质:

  1. 任何数和0做异或运算,结果仍然是原来的数,即a⊕0=aa⊕0=aa⊕0=a。
  2. 任何数和其自身做异或运算,结果是0,即a⊕a=0a⊕a=0a⊕a=0。
  3. 异或运算满足交换律和结合律,即a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=ba⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=ba⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。

假设数组中有 2m+1 个数,其中有 m个数各出现两次,一个数出现一次。令a1、a2、……、ama_1、a_2、……、a_ma1​、a2​、……、am​为出现两次的m个数,am+1a_{m+1}am+1​为出现一次的数。根据性质3,数组中的全部元素的异或运算结果总是可以写成如下形式:
(a1⊕a1)⊕(a2⊕a2)⊕⋯⊕(am⊕am)⊕am+1(a_1⊕a_1)⊕(a_2⊕a_2)⊕⋯⊕(a_m⊕a_m)⊕a_{m+1} (a1​⊕a1​)⊕(a2​⊕a2​)⊕⋯⊕(am​⊕am​)⊕am+1​
根据性质 2 和性质 1,上式可化简和计算得到如下结果:
0⊕0⊕⋯⊕0⊕am+1=am+10⊕0⊕⋯⊕0⊕a_{m+1}=a_{m+1} 0⊕0⊕⋯⊕0⊕am+1​=am+1​
因此,数组中的全部元素的异或运算结果即为数组中只出现一次的数字。

class Solution {
public:int singleNumber(vector& nums) {int ret=0;for (auto e: nums) ret ^= e;return ret;}
};
复杂度分析
  • 时间复杂度:O(n)O(n)O(n),其中n是数组长度。只需要对数组遍历一次。
  • 空间复杂度:O(1)O(1)O(1)。

相关内容

热门资讯

起底南博6位鉴定专家,个个来头... 南京博物院这个事,现在越闹越大。因为南京博物院现在也说不清楚庞莱臣后人捐赠的5幅画的去向,而拍卖市场...
中微公司尹志尧:五年内成为设备... 中经记者 孙汝祥 夏欣 北京报道中微公司(688012.SH)12月18日晚间披露,其正在筹划通过发...
中欧基金策略会传递2026判断... 作/博望财经站在2025年底看2026年,估值已经走过最便宜的阶段,盈利改善在不同板块之间分化,外部...
凯恩:欧冠真的很难赢得,上赛季... 在如今的足球世界中,欧冠无疑是每一位球员梦寐以求的舞台。然而,对于英格兰前锋哈里·凯恩来说,这条道路...
报告:预计2026年A股和港股... 新京报贝壳财经讯(记者胡萌)12月18 日,德勤中国资本市场服务部发布《中国内地及香港IPO市场20...
聚力赋能 以新质生产力驱动商业... 中国商报(记者 冉隆楠)12月18日,由中国商报社联合中国商界杂志社、中国商人杂志社、中国收藏杂志社...
遇见小面:“中式面馆第一股”,... “我们想做的是长久的生意,不是昙花一现的品牌。”2025年12月5日,遇见小面(02408.HK)正...
A股高开,优迅股份上市首日涨超... 2025.12.19本文字数:555,阅读时长大约1分钟作者 |一财阿驴09:30可控核聚变大幅高开...
多股涨超10%,商业航天再度走... 商业航天板块近期持续活跃。12月19日盘初,板块内个股再度拉升,华体科技2连板,雪人集团、国机精工涨...
港股科技、新能源车概念高开 12月19日,港股恒生指数高开0.53%,恒生科技指数涨0.81%。 科网股普涨,网易、阿里健康、...