做题是真快乐呀-【异或】136. 只出现一次的数字
题目:136. 只出现一次的数字
我的思路:
- 遍历一遍,做哈希映射。
- 再遍历一遍,找到结果为1的那个,就是答案
我的代码:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
dic = {}
for i in nums:
dic[i] = dic.get(i,0) + 1
ans = 0
for k,v in dic.items():
if v ==1:
ans = k
break
return ans
结果截图:
改进&感悟:
- 看了别人的题解,居然可以用【异或】这个思路。
- AI:什么是异或?
扩展思路&代码:
- 利用异或的性质:
- a ^ a = 0
- a ^ 0 = a
代码:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
# 利用异或来做题
ans = 0
for i in nums:
ans = ans ^ i
return ans
(怎么还慢了呢)
灵神的写法:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
# 利用异或来做题
# 用reduce
return reduce(xor,nums)
(原来是加了注释影响了速度呀)
参考资料:
附:其他题单
题单:XOR
1720. 解码异或后的数组
2433. 找出前缀异或的原始数组
1310. 子数组异或查询
2683. 相邻值的按位异或
1829. 每个查询的最大异或值
1442. 形成两个异或相等数组的三元组数目
2429. 最小 XOR
2527. 查询数组 Xor 美丽值
2425. 所有数对的异或和
2317. 操作后的最大异或和
附
从集合论到位运算,常见位运算技巧分类总结!
往期题解精选(按 tag 分类)
作者:灵茶山艾府
链接:https://leetcode.cn/problems/single-number/solutions/2481594/li-yong-yi-huo-de-xing-zhi-fu-ti-dan-pyt-oizc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~