領扣136 只出現一次的數字

2021-09-26 11:21:33 字數 1469 閱讀 1198

阿里一面的時候被問到了,答得不太好,也完全沒想到異或的方法。果然一查狀態就涼了。

題目:

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例1:

輸入: [2,2,1]

輸出: 1

示例2:

輸入: [4,1,2,1,2]

輸出: 4

一:先排序,再使用雙指標進行對比

時間複雜度o(nlogn),空間複雜度o(1)

class solution

return nums[nums.

size()

-1];

}};

一:雜湊集

若該陣列第一次出現,則插入雜湊集中。

第二次出現,在雜湊集中刪除。

最後剩下的數字就是只出現一次的數字。

時間複雜度o(n),空間複雜度o(n)

class solution

for(

auto j:bobo) ans = j;

return ans;}}

;

三:異或

任何乙個數字異或自己等於0。應此,我們可以從投到尾異或陣列中的每乙個數字,最終達到的結果剛好是只出現了一次的數字。

時間複雜度o(n),空間複雜度o(1)。

class solution

return ans;}}

;

領扣137.只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。

說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

輸入: [2,2,3,2]

輸出: 3

示例 2:

輸入: [0,1,0,1,0,1,99]

輸出: 99

/*

1.位運算求解此題;

2.如果把所有出現三次的數字的二進位制表示的每一位加起來,那麼每一位都能被3整除;

3.如果某一位的和能被3整除,那麼只出現一次數字的二進位制位中對應的那一位就是0,否則就是1;

*/public

intsinglenumber

(int

nums)

}int result =0;

for(

int i =

31; i >=

0; i--

)return result;

}

136 只出現一次的數字

一.題目 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4二.思路及 法1.使用hash tab...

136 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 異或運算滿足交換律,如a b c等同於c b...

136 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 c int singlenumber int...