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

LeetCode 只出现一次的数字题解

LeetCode 只出现一次的数字题解

题目描述

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

示例

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

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

解题思路

方法:位运算(异或)

思路

  • 使用异或运算来解决这个问题。
  • 异或运算满足交换律和结合律。
  • 相同的数字异或结果为 0,任何数字与 0 异或结果为自身。
  • 将数组中所有数字进行异或运算,结果就是只出现一次的数字。

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的长度。
  • 空间复杂度:O(1)。

代码实现

方法:位运算(异或)

# 只出现一次的数字(位运算) def single_number(nums): result = 0 for num in nums: result ^= num return result # 测试 def test_single_number(): nums = [2, 2, 1] print(single_number(nums)) # 输出:1 nums = [4, 1, 2, 1, 2] print(single_number(nums)) # 输出:4 if __name__ == "__main__": test_single_number()

测试用例

测试用例 1:基本情况1

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

测试用例 2:基本情况2

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

总结

只出现一次的数字是一个经典的位运算问题,它可以通过异或运算来高效地解决。

异或运算的核心思想是:相同的数字异或结果为 0,任何数字与 0 异或结果为自身。

掌握异或运算的使用方法,对于解决类似的问题非常重要。

http://www.jsqmd.com/news/794138/

相关文章:

  • 芯片供应链安全:从疫情危机到绿色基建的可信溯源实践
  • 【c++面向对象编程】第2篇:类与对象(一):定义第一个类——成员变量与成员函数
  • GD32C103RBT6 GPIO 库函数详解
  • 从一篇文章到一个 AI 排毒系统,我花了 7 天
  • 技术沟通中的语义陷阱:识别与清除过时术语的工程实践
  • LeetCode 数组中两个元素的最大与题解
  • 逆向Soul App客户端证书:从定位到解密,打通SSL双向校验抓包之路
  • 把“贪吃蛇”做成塔防Boss,这个Unity模板是怎么设计的?附完整变现思路
  • esptool闪存擦除机制深度解析:从硬件限制到工程实践的最佳策略
  • AI智能体企业级身份管理:基于Active Directory的agent-directory部署与实战
  • 大数据 机器学习毕业设计项目选题建议
  • Vagrant封装工具:快速搭建Claude API本地开发环境
  • Letta框架:全栈AI应用开发,从模型集成到部署上线的完整解决方案
  • 避坑指南:用Python爬携程旅游信息时,如何应对页面结构变化和反爬?
  • 社区Helm Charts仓库实战:从设计理念到应用部署全解析
  • 【c++面向对象编程】第3篇:类与对象(二):构造函数与析构函数
  • 法律智能体构建指南:从LLM与RAG技术到合同审查实战
  • LeetCode 或运算题解
  • 从零到精通的EtherCAT DS402控制模式选择指南:轮廓位置、同步位置、速度模式到底怎么选?
  • 西安石油大学仪光实践协会4月活动机械蝴蝶台灯
  • AI原生用户体验设计:为什么92%的传统交互团队在SITS 2026评估中首轮淘汰?
  • PDF编程的艺术:从基础到实践
  • Blender 3MF插件:5分钟掌握3D打印文件格式转换的完整方案
  • AI智能体记忆系统实战:基于向量数据库构建持久化记忆库
  • python机器学习毕设方向帮助
  • ATE PCB组装:半导体测试中的精密工艺与挑战解析
  • 联发科2012年崛起:从功能机到智能机的转型与挑战
  • 智能体网格(Agent Mesh)架构解析:构建大规模异构智能体协同网络
  • 告别‘瞎跑’:智能车竞赛中线性CCD动态曝光与浮动中心算法的实战调参心得
  • 用Cursor+ChatGPT实现代码报错的自动分析与修复