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

【力扣】136.只出现一次的数字

AC截图

题目

代码

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        if(nums.size()==1) return nums[0];
        sort(nums.begin(),nums.end());
        for(int i=1;i<nums.size()-1;){
            if(nums[i]==nums[i-1]){
                i+=2;
            }else{
                return nums[i-1];
            }
        }
        return nums[nums.size()-1];
    }
};

优化思路

优化的核心在于利用了异或运算的以下性质:

  1. 交换律a ^ b = b ^ a

  2. 结合律(a ^ b) ^ c = a ^ (b ^ c)

  3. 任何数与自身异或结果为0a ^ a = 0

  4. 任何数与0异或结果为其本身a ^ 0 = a

基于这些性质,考虑如下情况:

  • 如果数组中有两个相同的数字 a,它们的异或结果是 a ^ a = 0

  • 如果我们将数组中所有数字进行异或操作,成对出现的数字会相互抵消(因为 a ^ a = 0),而只出现一次的那个数字会保留下来(因为 a ^ 0 = a)。

优化代码

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ret = 0;
        for(int num:nums){
            ret ^= num;
        }
        return ret;
    }
};

相关文章:

  • 麒麟V10-SP2-x86_64架构系统下通过KVM创建虚拟机及配置虚机的NAT、Bridge两种网络模式全过程
  • pthon翻译googletrans案例
  • 高级课第五次作业
  • flink和yarn和mpp架构区别
  • 【菜笔cf刷题日常-1600】C. Balanced Stone Heaps(二分求min/max)
  • Linux -- I/O接口,文件标识符fd、file结构体、缓冲区、重定向、简单封装C文件接口
  • MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享
  • Android 系统开发的指导文档
  • 前端知识一
  • 【Linux】配置hosts
  • C# IEquatable<T> 使用详解
  • kali_Linux_2024安装frida==12.8.0
  • Xcode 运行真机失败
  • 前端面试题---.onChange() 事件与焦点机制解析
  • python爬虫:python中使用多进程、多线程和协程对比和采集实践
  • pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码
  • jenkins流程概述
  • Vue 调用摄像头扫描条码
  • 【零基础到精通Java合集】第二十三集:G1收集器深度解析
  • Git 强制同步远程仓库:如何彻底放弃本地更改并同步远程数据?
  • 专业建网站平台/百度seo优化服务项目
  • 字画价格网站建设方案/数据统计网站有哪些
  • 织梦医院网站开发/百度统计app
  • 阿亮seo技术顾问/独立站seo推广
  • 怎样弄免费网站/百度下载安装到桌面上
  • 公司怎么与网站进行活动推广/南京百度快速排名优化