当前位置: 首页 > news >正文

LeetCode - 136. 只出现一次的数字

题目

136. 只出现一次的数字 - 力扣(LeetCode)

思路和过程

异或解法的原理:

  • 任何数异或自己等于0:a ^ a = 0
  • 任何数异或0等于自己:a ^ 0 = a
  • 异或操作满足交换律和结合律:a ^ b ^ a = (a ^ a) ^ b = 0 ^ b = b

因此,当数组中除了一个数出现一次外,其他数都出现两次时,将所有数异或在一起,相同的数会两两抵消(变为0),最终只剩下那个出现一次的数。

例如对于输入 [4,1,2,1,2]:

  • result = 0
  • result ^= 4 = 4
  • result ^= 1 = 5
  • result ^= 2 = 7
  • result ^= 1 = 6 (1出现第二次,与第一次的1异或后抵消)
  • result ^= 2 = 4 (2出现第二次,与第一次的2异或后抵消)
  • 返回 4

这个解法的时间复杂度是O(n),空间复杂度是O(1),完美满足题目要求的线性时间和常量额外空间。

class Solution {
public:int singleNumber(vector<int>& nums) {int result=0;for(int i = 0; i<nums.size();i++){result ^= nums[i];}return result;}
};

相关文章:

  • vue3 + ant 实现 tree默认展开,筛选对应数据打开,简单~直接cv
  • Java异步编程难题
  • 渗透测试PortSwigger Labs:遭遇html编码和转义符的反射型XSS
  • 使用Gradle打包springboot项目为JAR包教程
  • SQL进阶之旅 Day 26:分库分表环境中的SQL策略
  • python数据结构和算法(4)
  • 51la查看https统计,悟空统计助力高效运营
  • TensorZero:开源 LLM 应用优化与可观测性平台
  • 如何将照片从Android传输到Mac?
  • Codeforces 2025/6/11 日志
  • ZZU-ARM汇编语言实验 34
  • 一键批量修改XML标签名称:告别手工修改,高效管理标注数据
  • input+disabled/readonly问题
  • (十)量子注意力机制:深度学习与量子计算的交叉融合探索
  • C++面试(5)-----删除链表中指定值的节点
  • Spring | 深入解析 Spring AOP 中的AopProxyUtils.ultimateTargetClass()解决代理对象注解获取问题
  • 如何选择合适的IP轮换周期
  • Arduino入门教程:0、课程介绍认识Arduino
  • html转markdown
  • 第二十六课:手搓梯度增强
  • 网站建设包括什么科目/长沙seo排名收费
  • 做网站的网页设计用cdr吗/seo推广灰色词
  • 做企业网站需要哪些/可以直接进入网站的正能量
  • 建设局网站模板/做一个公司网站要多少钱
  • 网站建设加盟代理/企业培训机构
  • 二级域名做城市分网站/国际形势最新消息