给定一个整数数组 nums
,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。
示例 :
1 | 输入: [1,2,1,3,2,5] |
注意:
- 结果输出的顺序并不重要,对于上面的例子,
[5, 3]
也是正确答案。 - 你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
方法一:集合
1 | class Solution { |
复杂度分析:时间复杂度和空间复杂度均为O(n)。其中,n为数组的长度。
方法二:哈希表
1 | class Solution { |
复杂度分析:时间复杂度和空间复杂度均为O(n)。其中,n为数组的长度。
方法三:位运算
以下方法来自《剑指Offer》
1 | class Solution { |
事实上,上述方法还能被简化(来自LeetCode官方题解)
1 | class Solution { |
复杂度分析:时间复杂度为O(n),空间复杂度为O(1)。其中,n为数组的长度。