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

力扣HOT100之技巧:136. 只出现一次的数字


这道题一开始想着用哈希表来做,但是如果用哈希表来做的话空间复杂度为O(n),我们还需要使用其他的技巧,这里我们使用异或操作。首先,我们需要知道异或的以下性质:
对于任意整数a,有

  1. 0 ^ a = a
  2. a ^ b = b ^ a(交换律)
  3. a ^ a = 0
  4. (a ^ b) ^ c = a ^ (b ^ c) (结合律)
    根据交换律和结合律,我们可以将数组中出现两次的数都挪到前面,定义一个变量result,初始化为0,然后通过一个for循环实现0 ^ a1 ^ a1' ^ a2 ^ a2'... ^ b,根据以上的性质,最终将化简为0 ^ b = b,其中ai == ai'b为仅出现一次的元素,按照上面的操作,我们最终会计算出仅出现一次的元素,返回即可。
class Solution {
public:int singleNumber(vector<int>& nums) {int result = 0;for(int i = 0; i < nums.size(); i++)result = result ^ nums[i];return result;}
};
http://www.dtcms.com/a/245761.html

相关文章:

  • opencl的简单介绍以及c++实例
  • 爱普生FC-135R晶振在广域网LoRa设备中的应用
  • openEuler 虚拟机中 Shell 脚本实现自动化备份与清理实践
  • Tomcat线程模型
  • 单链表经典算法
  • nt!CcGetDirtyPages函数分析
  • 软件测试相关问题
  • 蓝牙无线串口入门使用教程(以大夏龙雀 WF24 和 BT36 为例)
  • PCI总线概述
  • 【开源工具】:基于PyQt5的智能网络驱动器映射工具开发全流程(附源码)
  • Java 大视界——Java大数据在智能安防视频监控中的异常事件快速响应与处理机制
  • 动态规划2——路径动态规划
  • 【消息队列】——如何实现消息保序
  • 科技文明的奇妙锻造之旅
  • 实时监控、秒级决策:镜舟科技如何重塑融资融券业务数据处理模式
  • Appium+python自动化(二十一)- Monkey指令操作手机
  • 智能云打印机EN 18031申请认证流程
  • Python—turtle绘图库使用方法
  • flutter 的lottie执行一次动画后关闭
  • 体育赛事直播平台的数据架构:从实时统计到深度洞察
  • MAC-苹果电脑专业卸载工具AppCleaner
  • 用MATLAB打造智能温度监测系统:从实时绘图到预测分析
  • 「pandas 与 numpy」数据分析与处理全流程【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • 从0到1构建高并发秒杀系统:实战 RocketMQ 异步削峰与Redis预减库存
  • Spring MVC 入门案例:从代码到原理的深度剖析
  • Kafka问题排查笔记
  • 技术专栏|LLaMA家族——模型架构
  • WordToCard制作高考志愿填报攻略小卡片【豆包版】
  • Linux 与 Windows 系统挖矿程序清理
  • React 基础状态管理方案