Leetcode136. 只出现一次的数字

力扣136. 只出现一次的数字 数组中出现两次的数字 只出现一次的数字 题目来自 代码及思路 按位或 | ,有一为一,其他为零。(二进制位中对应运算的两个二进制位,只要有一个为1,其结果就是1) 0011 10进制3 0010 10进制2 0011 10进制3(结果) 按位与 & ,均一为一,其他为零。(对应的二进制位均为1,结果才是1) 0011 10进制3 0010 10进制2 0010 10进制2(结果) 按位异或 ^,不同为一,其他为零。(比如 (1^0) (0^1) 阅读详情

Every day a leetcode

题目来源:136. 只出现一次的数字

解法1:位运算

题目要求算法应该具有线性时间复杂度,不使用额外空间。

两层 for 循环肯定不行。

首先想到 hash,遍历一次数组,构建好 hash表后,返回出现次数为 1 的值即可,但是空间复杂度不符合要求。

然后想到 C++ 的 map,set,同样空间复杂度不符合要求。

如何才能做到线性时间复杂度和常数空间复杂度呢?

答案是使用位运算。

对于这道题,可使用异或运算 ⊕。

异或运算有以下三个性质:

  1. 任何数和 0 做异或运算,结果仍然是原来的数,即:a ⊕ 0 = a;
  2. 任何数和其自身做异或运算,结果是 0,即:a ⊕ a = 0;
  3. 异或运算满足交换律和结合律,即:a ⊕ b ⊕ a = b ⊕ a ⊕ a = b ⊕ (a ⊕ a) = b ⊕ 0 = b。

由性质3可知,数组中的全部元素的异或运算结果即为数组中只出现一次的数字。

代码:

int singleNumber(int* nums, int numsSize){
    int ans=0;
    for(int i=0;i<numsSize;i++) ans^=nums[i];
    return ans;
}

结果:
在这里插入图片描述

Java对接快递鸟,查询快递物流信息 根据用户输入的订单号,我们的后台识别订单号并根据快递鸟查询快递API接口,实现自动查询的功能。下面是java版本的根据单号查询物流跟踪信息的详细示例代码。只需要下载就可以运行,(自己需要简单的修改)注:登录快递鸟用户管理后台后获得。登录快递鸟用户管理后台。 阅读详情

相关推荐

OnlyOffice Docker部署踩坑实录:解决Nginx反向代理导致的editor.bin下载失败

本文详细解析了在Docker中部署OnlyOffice时,因Nginx反向代理配置不当导致editor.bin下载失败的常见问题。通过分析问题根源,提供了从Nginx代理配置、Docker网络设置到OnlyOffice容器内部调整的完整解决方案,并分享了实战调试技巧与性能优化建议,帮助用户彻底解决这一部署难题。

wine的专栏 523

LC 只出现一次的数字(异或解法)

异或: 定义:如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。 符号: ⊕ 特性: 任何数和 00 做异或运算,结果仍然是原来的数,即 a⊕0=a、a⊕0=a。 任何数和其自身做异或运算,结果是 00,即 a⊕a=0、a⊕a=0。 异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b 在计算机中的表示 ^ 题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。

hahaha8129的博客 641

戴尔PowerEdge服务器R450 RAID配置步骤

戴尔PowerEdge服务器R450 RAID配置步骤

且听风呤tmj的博客 6911

【LeetCode-简单】136. 只出现一次的数字 - 位运算

136. 只出现一次的数字 如果不考虑时间复杂度和空间复杂度的限制,这道题有很多种解法,可能的解法有如下几种: 使用集合存储数字。遍历数组中的每个数字,如果集合中没有该数字,则将该数字加入集合,如果集合中已经有该数字,则将该数字从集合中删除,最后剩下的数字就是只出现一次的数字。 使用哈希表存储每个数字和该数字出现的次数。遍历数组即可得到每个数字出现的次数,并更新哈希表,最后遍历哈希表,得到只出现一次的数字。 使用集合存储数组中出现的所有数字,并计算数组中的元素之和。由于集合保证元素无重复,因此计算集合中

ASDF的博客 559

RTC温度补偿:如何让时间分秒不差?

RTC(实时时钟)温度补偿技术通过"检测温度→计算误差→动态调整频率"的闭环机制,解决振荡器频率随温度变化导致的时间误差问题。核心步骤包括:1)高精度温度检测;2)基于温度-频率误差模型计算偏差;3)通过硬件(可编程电容/DAC)或软件方式调整振荡频率。该技术需突破温度检测精度、误差模型拟合、频率调整分辨率等关键点,根据不同应用场景(消费电子±5ppm至军工±0.1ppm)选择匹配方案。典型实现如STM32的分段线性补偿算法,可将工业级RTC精度提升至±2ppm以内。

上市公司前技术负责人,20 年软硬件深耕 + 百人研发团队管理经验,名校理工科背景加持。从技术攻坚到团队掌舵,沉淀海量项目实战与管理心得,专注分享软硬件干货、疑难问题解决方案,既是靠谱知识传播者,也盼链接优质项目共成长。 1229

量化策略分享 | MA超进化:LLT低延迟趋势线

移动平均线(MA)是我们技术分析中常用的一种趋势跟踪指标,但在使用的时候你是否也会有这样的烦恼:交易信号延迟太久,或者交易信号太频繁了!延迟性和平滑性问题似乎是不可兼得的“鱼和熊掌”。 针对这个问题,广发证券基于通信领域的滤波器原理,在《短线择时策略研究之三:低延迟趋势线与交易性择时》中创造性构建了:LLT低延迟趋势线(Low-lag Trendline)。 LLT低延迟趋势线是一种二阶滤波器,阶数相对适宜,相比MA、EMA等均线指标能够降低延迟,同时增强在低频部分的输出信号。 当然,..

量化交易研究 5309

leetcode:136. 只出现一次的数字

题目来源 leetcode 题目描述 题目解析 关键点在于两两相消 使用set 题目中让我们在线性的时间复杂度内求解,那么一个非常直接的思路就是使用 HashSet,利用其常数级的查找速度。遍历数组中的每个数字,若当前数字已经在 HashSet 中了,则将 HashSet 中的该数字移除,否则就加入 HashSet。这相当于两两抵消了,最终凡事出现两次的数字都被移除了 HashSet,唯一剩下的那个就是单独数字了 class Solution { public int singleNumber(i

OceanStar的博客 486

LeetCode136(力扣136):只出现一次的数字 (C++)

136.只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 我的题解(错误错误错误) class Solution { public: int singleNumber(vector<int>& nums) { so

VegetableGirl的博客 442

HBV模型

据说mHM模型也是基于HBV模型原理。 网上不同版本的HBV模型稍有差别 def hbv_main(n_days, params, air_temp, prec, dpem): #n_days 模拟天数 #air_temp 每月温度 #prec 降水 #dpem 每月蒸发 Tsnow_thresh = 0.0 ca = 410. # Initialize arrays for the simiulation snow = np.zeros(air_temp.size

m0_46268055的博客 2331

YOLOv11改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题

本文记录的是改进YOLOv11的损失函数,将其替换成Slide Loss,并详细说明了优化原因,注意事项等。Slide Loss函数可以有效地解决样本不平衡问题,为困难样本赋予更高的权重,使模型在训练过程中更加关注困难样本。若是在自己的数据集中发现容易样本的数量非常大,而困难样本相对稀疏,可尝试使用Slide Loss来提高模型在处理复杂样本时的性能。

Limiiiing的博客 4568

【每日算法】LeetCode 136. 只出现一次的数字

算法摘要:LeetCode 136. 只出现一次的数字 本文分析了找出数组中唯一出现一次数字的问题,提供了三种解法: 哈希表法:直观易懂,但需要O(n)空间 集合数学法:利用和差计算,同样需要额外空间 异或位运算法:最优解,O(n)时间且O(1)空间,利用异或性质抵消成对数字 关键点: 异或运算具有自反性(a^a=0)和交换律 前端开发中,此类算法可用于状态管理、数据去重等场景 类似题目包括处理三次出现、两个唯一数等变体问题 最优解法仅需一次遍历和常数空间,体现了算法对编码能力的提升价值。

LYFlied的博客 932

28-3 文件上传漏洞 -白盒审计绕过

这行代码是用来获取文件名中最后一个点(.)后的部分,也就是文件的后缀名。这个函数会返回以最后一个点(.)开始到字符串末尾的部分,包括点(.)本身。然而,这段代码存在一个潜在的安全风险。攻击者可以利用多个点(.)来构造恶意文件名,以绕过后缀名检查。切换到bp将抓到的上传请求发送到重发器然后改包。先上传一个普通的php文件然后使用bp抓包。

weixin_43263566的博客 392

leetcode.136 single-number 力扣.136 只出现一次的数字 位运算

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。异或的性质是:相同的数字异或结果为 0,0 和任何数字异或结果为该数字本身。通过 HashMap 记录每一个元素出现的次数,然后找到为1的。所以异或所有元素,最后的结果就是那个只出现一次的数字。除了某个元素只出现一次以外,其余每个元素均出现两次。因为其他的元素成对出现,那么剩下的就是结果。输入:nums = [4,1,2,1,2]输入:nums = [2,2,1]找出那个只出现了一次的元素。输入:nums = [1]

643

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

力扣leetcode136. 只出现一次的数字C++

力扣leetcode136. 只出现一次的数字C++ 136. 只出现一次的数字 对于这道题目我们可以考虑使用位运算的思想来进行求解 知识点回顾 异或运算 a^a = 0; a^a ^b = b; a^ b^ c = a^c ^ b; 我们可以看到两个相同的数 异或的结果为0 因此这道题目只需要将庶族内的所有元素逐一异或,就可以得到结果 代码如下 class Solution { public: int singleNumber(vector<int>& nums) {

qq_36711295的博客 349

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

golang力扣leetcode 136.只出现一次的数字I

136.只出现一次的数字136.只出现一次的数字题解代码 136.只出现一次的数字 136.只出现一次的数字 题解 思路:a ^ a=0 所以最后异或出来必定是只出现一次的数字 代码 package main func singleNumber(nums []int) int { result := 0 for i := 0; i < len(nums); i++ { result ^= nums[i] } return result } ...

清风 498

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

leetcode 136.只出现一次的数字

leetcode 136.只出现一次的数字 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 解题思路 采用异或运算。0和其他数字异或都等于数字本身,两个相同...

EngineerHe的博客 808

LeetCode第136题 只出现一次的数字

LeetCode第136题讲解 只出现一次的数字

林林林的博客 619

《LeetCode力扣练习》第136题 只出现一次的数字 Java

《LeetCode力扣练习》第136题 只出现一次的数字 Java 一、资源 题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/single-number 著作

XRT_knives的博客 264

leetcode 136——只出现一次的数字

leetcode 136——只出现一次的数字 题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/single-number 著作权归领扣网络所有。商业转载请联系官方

weixin_44795839的博客 186

LeetCode 136: 只出现一次的数字

目录LeetCode 136: 只出现一次的数字题目描述解题异或 LeetCode 136: 只出现一次的数字 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 【示例 1]】 输入: [2,2,1] 输出: 1 【示例 2】 输入: [4,1,2,1,2] 输出: 4 解题     思路I:排序,对整个数组排序,寻找与左右两边都不相同的那个数字。     思路I

s_Shune 217

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

题目描述(简单难度) 所有数字都是成对出现的,只有一个数字是落单的,找出这个落单的数字。 解法一 题目要求线性复杂度内实现,并且要求没有额外空间。首先我们考虑假如没有空间复杂度的限制。 这其实就只需要统计每个数字出现的次数,很容易想到去用 HashMap 。 遍历一次数组,第一次遇到就将对应的 key 置为 1。第二次遇到就拿到 key 对应的 value 然后进行加 1 再存入。最后只需要寻找...

wind_liang的博客 490

Leetcode136--只出现一次的数字

Leetcode136–只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 编程语言:python 作者:黑暗主宰 邮箱:shengzhanhe@gmail.com 文章目录Leetcode136--只出现一次的数字题目描述解题思路 Leetcode136–只出现一次的数字 题目描述 原题链接: ​ https://leetc...

EngineerHe的博客 522

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

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

LNsupermali的博客 953

LeetCode第 136 题:只出现一次的数字(C++)

136. 只出现一次的数字 - 力扣(LeetCode) 要求线性时间复杂度,如果使用额外空间(比如哈希表set/map)的话,就很简单。 class Solution { public: int singleNumber(vector<int>& nums) { int sum = 0; unordered_set<int> set; for(int i = 0; i < nums.size(); ++i){

zj 477

LeetCode 136.只出现一次的数字

LeetCode 136.只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 因为其他所有数字都出现两次,所以用亦或 主要是一个函数 cla...

缇欧的咪西 457
上一篇: Leetcode190. 颠倒二进制位
下一篇: Leetcode二叉树的前、中、后序遍历
UestcXiye
博客等级 码龄8年 9030粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值