【算法|算法日记1: letcode136题只出现一次的数字】
题目要求
解题
这题简单来说就是一个求唯一没有重复的题 , 通常可以将所有的值遍历一遍即可找出唯一不重复的那个值 。
但是题目要求的是不使用额外空间 , 那么此时就一定要使用到位异或 。
很多小伙伴都知道计算机编程中的逻辑运算 , 也就是与或非这三种 , 而位异或是什么呢 , 其实本质上来说也是或运算 , 只不过他是二进制上的或 。
而这题的思路就出来了 , 可以这么理解相同的两个数的二进制在位异或的计算下直接相冲抵消了 , 只剩下了0 , 而0和任何数位异或都等于那个值本身 。
两个数转为二进制进行比较 , 一位一位的比 。如果两个数相应的位上一样 , 结果就是0 , 不一样就是1 , 如5+3所以 011^101=110
class Solution:
def singleNumber(self nums: List[int
) -> int:
s = 0
for i in nums:
s=s ^ i
return s
首先设置一个初始的值遍历列表和其位异或 , 最后就只剩下那个唯一的值了 。
- 升级|OPPO Find X5影像升级:不止马里亚纳X,还有自研3A算法
- 算法|拯救者Y700全网首测:2.5K+120hz高刷屏,为游戏玩家而生
- 算法|“安卓之父”回归!新款旗舰夏季发布,镜头模组神似苹果!
- 算法|vivo X80要来了?安兔兔曝光一款新机,跑分超107万!
- 算法|Find X5系列官宣自研底层3A算法!刘作虎:最冒险的一次影像投入
- 算法|为什么苹果不做节假日闹钟等简单功能?
- 随机|你听的随机播放音乐,可能是算法下的伪随机
- 荣耀6|旧旗舰机做老人机,白色二手荣耀6体验日记,这些功能一直很好用
- 算法|2022年这3款千元的“神机”,没有溢价,依然好用
- 苹果|再加码!3A算法官宣,OPPO Find X5系列新机影像太猛