只出現一次的數

2021-08-18 16:34:42 字數 671 閱讀 7728

給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其他所有元素均出現兩次。 找出只出現一次的那兩個元素。

示例:

給定 nums = [1, 2, 1, 3, 2, 5], 返回 [3, 5].

注意:

結果的順序並不重要,對於上面的例子 [5, 3] 也是正確答案。

你的演算法應該具有線性複雜度,你能否僅使用恆定的空間複雜度來實現它?

解題思路:

1.異或運算 因為a^a = 0

2.將陣列分為兩組

3.如3(011)^5(101)=6(110),證明,3和5的倒數第二位不同=> 3&2>0,5&2==0

class

solution

int tm = (int) math.pow(2, getlast1(temp));

res[0] = 0;

res[1] = 0;

for (int i = 0; i < nums.length; i++) else

}return res;

}//找到最後乙個1的位置

public

static

int getlast1(int n) else

}return

count;

}}

只出現一次的數

問題描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。解決思路 將陣列中元素全部異或,根據異或特點,出現兩次的元素異或後結果為0,陣列全部異或之後的結果就是只出現一次的那個元素。實現 int singlenumber vector int n...

只出現一次的數

問題 有n個數,其中只有乙個數出現一次,其他的都出現兩次,求這個數 空間複雜度為常數 全部xor起來即可 include includeusing namespace std int main printf d n xor sum return 0 1231 3 1 51 2 3 2 3 inclu...

陣列中只出現一次的數

首先看看題目要求 陣列 a中,除了某乙個數字 x之外,其他數字都出現了三次,而 x出現了一次。請給出最快的方法找到x。這個題目非常有意思,在本人部落格中有 位操作基礎篇之位操作全面總結 這篇文章介紹了使用位操作的異或來解決 陣列中其他數字出現二次,而x出現一次,找出x。有 這邊文章介紹了分組異或的方...