[LeetCode][C++] #260. Single Number III

Newone Tsai
May 3, 2021

[Medium][Question]:

Given an integer array nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once. You can return the answer in any order.

Follow up: Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity?

Example 1:

Input: nums = [1,2,1,3,2,5]
Output: [3,5]
Explanation: [5, 3] is also a valid answer.

Example 2:

Input: nums = [-1,0]
Output: [-1,0]

Example 3:

Input: nums = [0,1]
Output: [1,0]

Constraints:

  • 2 <= nums.length <= 3 * 104
  • -231 <= nums[i] <= 231 - 1
  • Each integer in nums will appear twice, only two integers will appear once.

My Solution[C++]:

[Ideas]: 用Bit-wise Operation,XOR所有數字,剩下的就會是我們要的那兩個數字(a,b)xor過的。

接著再找出某一位元為1,也就是a or b其中一個數字該為原有舉1,我們可以利用這位元來分成兩組,接著把每一組再xor過,殘存的就會是a和b。

--

--

Newone Tsai

I took the one less traveled by, and that has made all the difference.