LeetCode 只出現一次的數字

2021-08-22 02:51:02 字數 961 閱讀 2565

傳送門

題目描述

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

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

示例 1:

輸入: [2,2,1]

輸出: 1

示例 2:

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

輸出: 4

假·解答一

遍歷陣列,判斷當前元素是否是唯一的,是則返回。

if (nums == null || nums.

length == 0) return

0; int i, j;

for (i = 0; i

< nums.

length; i++)

if (j == nums.

length) return nums[i];

}return nums[i];

假·解答二

先排序,單獨的那個元素一定是位於奇數下標處,遍歷陣列判斷當前元素是否等於下乙個元素,不相等的話當前元素就是那個單獨的元素。

class solution 

return nums[nums.length - 1];

}}

真·解答

採用異或運算

只要對陣列中的所有元素進行一次異或運算,異或後的結果就是答案。

例如nums = [4, 1, 2, 1, 2],4 ^ 1 ^ 2 ^ 1 ^ 2=1 ^ 1 ^ 2 ^ 2 ^ 4=0 ^ 0 ^ 4=4

class solution 

}

參考文章

只出現一次的數

給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其他所有元素均出現兩次。找出只出現一次的那兩個元素。示例 給定 nums 1,2,1,3,2,5 返回 3,5 注意 結果的順序並不重要,對於上面的例子 5,3 也是正確答案。你的演算法應該具有線性複雜度,你能否僅使用恆定的空間複雜度來實現它...

只出現一次的數

問題描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。解決思路 將陣列中元素全部異或,根據異或特點,出現兩次的元素異或後結果為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...