当前位置: 首页 > 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;}
};

相关文章:

  • 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执行一次动画后关闭
  • 体育赛事直播平台的数据架构:从实时统计到深度洞察
  • 整站网站优化/培训机构网站制作
  • html基本知识/站群seo技巧
  • 深圳响应式网站建设公司/最新军事新闻今日最新消息
  • 做网站必须需要服务器嘛/百度推广平台收费标准
  • 网络服务商是啥/网站seo快速
  • 上海人才网最新招聘信息2022年/seo外链自动群发工具