260. Single Number III

Given an array of numbers 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.

For example:

Given nums = [1, 2, 1, 3, 2, 5], return [3, 5].

給你一個數組,里邊所有的數字都是有兩個,只有兩個數字是有一個的,找出這兩個數字并且返回。


代碼如下:

參考代碼

解題思路:把nums里所有的數字求異或(^),得到x_xor_y,然后求出mask,其中mask是這個數字,比如x_xor_y = 0110b , 那么mask = 0010b, 意思就是從右向左,找出第一個為1的位置。這個位置就是這兩個數字在二進制中不同的地方,然后利用這個位置,將所有的數字分開異或,這個位置為1的異或,求出 x; 然后這個位置為0的異或,求出y。然后保存到vector。

求第一個為1的位置,利用公式: x & (~(x - 1))?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容