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

HOT100题打卡第28天——位运算

哈喽各位,今天终于开了一个新篇——技巧篇

来看看今天的题目

136. 只出现一次的数字

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

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。

示例 1 :

输入:nums = [2,2,1]

输出:1


分析题目

首先拿到这个题目我就想到用哈希表来做,建一个布尔类型的map集合,然后遍历数组,如果是第一次遇到这个数,就把这个数作为键存入表中,对应的值是true,因为目前不重复,后续如果再次遇到这个数,重复了,那么这时就可以利用键的唯一性,把当前数再次存入map中,值为false,覆盖上一次的数据,最后遍历hash表找出值为true的键就可以了

然后得到的代码如下:

代码

class Solution {public int singleNumber(int[] nums) {//用一个哈希表来储存元素和重复结果,如果当前元素重复,则value是trueMap<Integer, Boolean> hm = new HashMap<>();//遍历数组,判断当前元素是否在hash表中存在for (int num : nums) {boolean value = hm.containsKey(num);//如果当前map中不包含当前数,那么返回值value是false,表示没有这个数//存进表中,false表示没有重复//如果后面数组又遍历到相同数,此时contains方法返回值就是true,再次存入map,true表示重复hm.put(num, value);}for (Map.Entry<Integer, Boolean> entry : hm.entrySet()) {//最后挑出不重复的一个if (!entry.getValue()) {return entry.getKey();}}return -1;}
}

提交了能通过,但是并不满足常量空间条件

看了一下标签,可以用位运算来帮助解决这道题,这题用到的是异或的特性

异或的三大特性:

异或运算用符号 ^ 表示,对两个二进制位进行操作,规则是:

1.相同为 0,不同为 1

2.任何数与 0 异或,结果仍是该数(a ^ 0 = a)。

3.任何数与自身异或,结果为 0

代码如下

 

class Solution {public int singleNumber(int[] nums) {int n=nums.length;int res=0;for(int i=0;i<n;i++){res^=nums[i];}    return res;}
}

所有出现 2 次的元素,通过 “x ^ x = 0” 相互抵消,对最终结果无影响;

唯一出现 1 次的元素,通过 “0 ^ y = y” 被保留在 res 中;

因此,循环结束后,res 就是那个只出现 1 次的元素。

ok,那今天的代码就写到这里了,明天见!

http://www.dtcms.com/a/569070.html

相关文章:

  • EasyOCR的模型放在了哪里
  • 18、【Ubuntu】【远程开发】技术方案分析:私网ip掩码
  • 做购物网站哪个cms好用企业支付的网站开发费如何入帐
  • 怎样将自己做的网站给别人看微信小程序网站建设
  • 【软考】信息系统项目管理师-质量管理论文范文
  • (T24) 跨时钟域SI->Q path的latch选型
  • 学习记录记录记录记录
  • 【JAVA】基础(一)
  • Coze-AI智能体开发平台4-应用
  • day_06_06方法的参数值传递机制
  • 选用铜做电线的底层逻辑
  • 守护数据的最后一道防线:深入浅出TDE透明数据加密技术
  • Hadess零基础学习,如何管理通用Generic制品
  • 【数论】裴蜀定理与扩展欧几里得算法 (exgcd)
  • 新北区城乡建设局网站wordpress 瑜伽课程
  • 解读ffmpeg控制台输出
  • SQL Server 集群网络架构详解
  • php做视频网站源码上海建设网站公
  • 外国网站上做Taskvs2012网站开发环境
  • STM32的串口(上位机控制下位机)
  • Anthropic 经济指数报告:地理和企业人工智能采用的不均衡性
  • 美工免费素材网站淮南网格员招聘
  • 坐标系转换快速定位问题
  • ELK学习笔记
  • 2025世界职业院校技能大赛:10分钟展演黄金时间分配
  • rust表格文件处理
  • 基于VU13P的6U VPX 载板
  • 做网站的害处道滘仿做网站
  • 128天写作之旅:记录与成长的点滴
  • 个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)