题目
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
思路
- 最简单的方法是遍历数组,利用字典或者集合判断是否重复,但是利用了多余空间;
- 因为数组元素为整数,并且只重复2次,可以用
^
(位异或
)操作,保留唯一不重复整数。
解答
py
class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
# dc = set()
# for i in nums:
# if i in dc :
# dc.discard(i)
# else:
# dc.add(i)
# return dc.pop()
result = 0
for i in nums:
result ^= i
return result
C#
public class Solution {
public int SingleNumber(int[] nums) {
int result = 0;
foreach (int i in nums)
{
result ^= i;
}
return result;
}
}