【leetcode】136. 只出现一次的数字(Single Number)(位运算)[简单]

2023-05-16

链接

https://leetcode-cn.com/problems/single-number/

题意

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

说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

思路

标签位运算,常见位运算有 与(&)、或(|)、取反(~)、异或(^)……对,就是 异或。(手动狗头)

异或性质:

  1. a ⊕ 0 = a a \oplus 0 = a a0=a (任何数异或 0 0 0 等于本身)
  2. a ⊕ a = 0 a \oplus a = 0 aa=0 (任何数异或自身等于 0 0 0
  3. 交换律: a ⊕ b = b ⊕ a a \oplus b = b \oplus a ab=ba
  4. 结合律: ( a ⊕ b ) ⊕ c = a ⊕ ( b ⊕ c ) (a \oplus b) \oplus c=a \oplus (b \oplus c) (ab)c=a(bc)

因为除了所求元素是 奇数 个外,其余均是 偶数 个,偶数个相同的元素异或等于 0 0 0,所以将所有元素异或,偶数个的元素最后都会变成 0 0 0,最后只剩下所求的奇数个的元素和 0 0 0 异或,即最后等于所求元素本身。

AC代码

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res = 0;
        for(int i = 0; i < nums.size(); ++i) {
            res ^= nums[i];
        }
        return res;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【leetcode】136. 只出现一次的数字(Single Number)(位运算)[简单] 的相关文章

  • gcc-7.5.0源码安装

    由于想学习gcc 收集资料时发现了一本关于gcc源代码相关的书籍 xff0c 书中基于的版本是gcc 4 4 0 于是想重新编译一个带调试信息的版本 刚开始在ubuntu18 04上安装gcc 4 4 0时没有成功 xff0c 感觉是用系统
  • hdfs shell 操作基本语法

    hdfs用户切换并查看文件 xshell登陆到linux服务器 root 用户切换 以hdfs用户登陆查看创建的hive数据库是否以文件夹的形式存在hive文件目录下 su hdfs hdfs dfs ls apps hive wareho
  • js 多级对象数组删除对象

    let firstIndex 61 null let secondIndex 61 null const findItemNested 61 arr itemId nestingKey 61 gt arr reduce a item myI
  • Aarch64安装Anaconda Pytorch Torchvision

    1 Anaconda wget https github com Archiconda build tools releases download 0 2 3 Archiconda3 0 2 3 Linux aarch64 sh sudo
  • 扩大VMWARE里面虚拟硬盘大小(*.vmdk)

    http blog csdn net bshawk archive 2008 01 28 2070587 aspx 最近编译2 6 22的内核时 xff0c 发现虚拟机器FC6硬盘空间不够了 xff0c 于是乎 xff0c 想扩展下硬盘的大
  • c#加载xml文件

    C 加载xml文件 XmlDocument xmlDoc 61 new XmlDocument xmlDoc Load Application StartupPath 43 34 34 43 34 xml xml 34 加载xml文件 Xm
  • zram

    wiki zram是Linux内核的一个模块 xff0c 之前被称为 compcache zram通过在RAM内的压缩块设备上分页 xff0c 直到必须使用硬盘上的交换空间 xff0c 以避免在磁盘上进行分页 xff0c 从而提高性能 由于
  • 英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器

    本系列的其它几篇文章 xff1a 英飞凌 AURIX 系列单片机的HSM详解 xff08 1 xff09 何为HSM 英飞凌 AURIX 系列单片机的HSM详解 xff08 2 xff09 与HSM相关的UCB和寄存器 英飞凌 AURIX
  • MySQL数据库知识点总结

    1 什么是 MySQL MySQL 是 种关系型数据库 xff0c 在 Java 企业级开发中 常常 xff0c 因为 MySQL 是开源免费的 xff0c 并 且 便扩展 阿 巴巴数据库系统也 量 到了 MySQL xff0c 因此它的稳
  • 论文笔记-Towards Scene Understanding-Unsupervised Monocular Depth Estimation

    论文信息 标题 xff1a Towards Scene Understanding Unsupervised Monocular Depth Estimation with Semantic aware Representation作者 x
  • 结合 Casbin 对 http 请求做 RBAC 鉴权以及添加请求路由参数支持

    目录 总结 背景 实操 安装 Casbin 创建一个 Casbin 模型 创建一个 Casbin 策略 加载 Casbin 模型和策略并创建一个路由 总结 在本文中 xff0c 我们将介绍如何结合 Casbin 对 HTTP 请求进行基于角
  • Git—— master|RELEASE1/1

    当提交代码时 xff0c 多人合作避免不了要冲突 公司就我一个前端 xff0c 所以我一般情况下几乎不习惯pull代码 记录一下今天的执行过程 1 在vscode工具中操作更新的代码 2 在Git Bash中push 代码 span cla
  • 【FPGA】Mint20.3系统安装VCS2018环境

    mint系统是目前新手入手linux系统最为容易的系统版本 xff0c 其界面与Windows系统高度重合 vcs是IC开发常用的系统仿真工具 xff0c 但vcs工具的安装是一个很头疼的事情 xff0c 本篇展现在mint20 3系统安装
  • kubernetes使用flannel网络插件服务状态显示CrashLoopBackOff

    使用Kubeadm安装K8s集群 xff0c 在安装flannel网络插件后 xff0c 发现pod kube flannel ds 一直是CrashLoopBackOff 报错内容如下 xff1a log is DEPRECATED an
  • 用Python写了个金融数据爬虫,半小时干了全组一周的工作量

    最近 xff0c 越来越多的研究员 基金经理甚至财务会计领域的朋友 xff0c 向小编咨询 xff1a 金融人需要学Python么 xff1f 事实上在2019年 xff0c 这已经不是一个问题了 Python已成为国内很多顶级投行 基金
  • SSIS_数据流转换(Union All&合并联接&合并)

    Union All xff1a 与sql语言 Union All 一样 xff0c 不用排序 xff0c 上下合并多个表 Union All转换替代合并转换 xff1a 输入输出无需排序 xff0c 合并超过两个表 合并联接 xff1a 有
  • LACP协议:链路聚合/华为交换机LACP

    链路聚合的3种模式 61 61 61 61 61 gt 手工聚合 静态聚合 动态聚合 手工聚合 xff1a 手工汇聚概述 xff1a 手工负载分担模式是一种最基本的链路聚合方式 xff0c Eth Trunk 接口的建立 xff0c 成员接
  • Pytorch中Tensor和numpy数组的互相转化

    Pytorch中Tensor和Numpy数组的相互转化分为两种 xff0c 第一种转化前后的对象共享相同的内存区域 xff08 即修改其中另外一个也会改变 xff09 xff1b 第二种是二者并不共享内存区域 共享内存区域的转化 这种涉及到
  • #51单片机# 用中断实现蜂鸣器

    蜂鸣器常作为提示音 xff0c 用于计算机 打印机 万用表等设备中 提示音一般很简单 xff0c 能响就行 某单片机的蜂鸣器原理图 xff1a 该单片机的CPU原理图 xff1a 下面这段程序用到了中断的算法 xff0c 实现了蜂鸣器在4k
  • VM跨主机通信ovs配置

    如果位于不同物理主机上的两个VM需要通信 xff0c 那么底层的虚拟交换机ovs需要配置tunnel端口 OVS中支持添加隧道 Tunnel 端口 xff0c 常见隧道技术有两种gre或vxlan 隧道技术是在现有的物理网络之上构建一层虚拟

随机推荐