Day9-只出现一次的数字
🔗 LeetCode 136 - Single Number
📌 题目描述
给定一个非空整数数组 nums
,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须在线性时间复杂度内完成算法,并且不能使用额外空间。
示例:
1 | 输入: [4,1,2,1,2] |
💡 解题思路
- 异或运算的关键特性:
a ^ a = 0
a ^ 0 = a
- 所以将所有数字进行异或操作,成对的数字会抵消为 0,剩下的就是那个只出现了一次的数字。
✅ JavaScript 实现
1 | var singleNumber = function(nums) { |
🟣 Swift 实现
1 | func singleNumber(_ nums: [Int]) -> Int { |
🧠 思考拓展
- 如果一个元素出现一次,其余出现三次,该怎么做?
- 如果有两个只出现一次的数字,其余都出现两次呢?
- 如何用位运算统计任意次数的重复?