1. 程式人生 > >Leetcode:260只出現一次的數字III

Leetcode:260只出現一次的數字III

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

示例 :

輸入: [1,2,1,3,2,5]
輸出: [3,5]

注意:

  1. 結果輸出的順序並不重要,對於上面的例子, [5, 3] 也是正確答案。
  2. 你的演算法應該具有線性時間複雜度。你能否僅使用常數空間複雜度來實現?

解題思路;

位運算。

1. 將所有數字取異或之後res = a^b,其中a,b就是那兩個不一樣的元素。

2. res&-res就是res最右端是1個地方。這個位上,a,b其中一個必然為0,另一個必然為1。

3. 那麼就可以將之前成對出現的數字按照這個位上是0或者1分成兩個組,分別求兩組元素的異或,即可得到a,b的值。

                     

C++程式碼
class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        int a=0,b=0,c=0;
        for(auto& x:nums)
            a^=x;
        a=a&-a;
        for(auto& x:nums)
            if(x&a) b^=x;
            else c^=x;
        return {b,c};
    }
};

相關推薦

Leetcode-260. 出現數字 III

給定一個整數陣列 nums,其中恰好有兩個元素只出現一次,其餘所有元素均出現兩次。 找出只出現一次的那兩個元素。 示例 : 輸入: [1,2,1,3,2,5] 輸出: [3,5] 注意: 結

Leetcode:260出現數字III

給定一個整數陣列 nums,其中恰好有兩個元素只出現一次,其餘所有元素均出現兩次。 找出只出現一次的那兩個元素。 示例 : 輸入: [1,2,1,3,2,5] 輸出: [3,5] 注意: 結果輸出的順序並不重要,對於上面的例子, [5, 3] 也是正確答案。 你的演

260. 出現數字 III(建立一個字典+種我不會的思路)

參考:https://blog.csdn.net/wem603947175/article/details/82117675 這道題很簡單,用字典的方法做的,但是我的字典實現超過時間限制。對比如下: (學習(*^▽^*)) # 通過,優於我的字典存取 # class Solution(

Leetcode-探索 | 出現數字

求和 時空 技巧 做的 計算 輸出 奇技淫巧 leetcode bsp 給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。 說明: 你的算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎? 示例 1: 輸入: [2

LeetCode--136--出現數字

實現 額外 比較 pre 整數 etc -- tco tro 問題描述: 給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。 說明: 你的算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎? 示例 1: 輸入: [

leetcode 136. 出現數字 C語言版

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

Leetcode 136 出現數字 && Leecode 389 找不同

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

leetcode 136. 出現數字(python)

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

leetcode 136. 出現數字(Single Number)

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

Leetcode-136. 出現數字(python3)

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

LeetCode陣列-出現數字

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

leetcode出現數字

                                              只出現一次的數字 一、要求 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。 說明: 你的演算法應該具有線性時間複雜度。

LeetCode-136.出現數字(相關話題:位運算)

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

leetcode 137. 出現數字 II

給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。 說明: 你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎? 這種純數字計算的問題,如果我們只用加減乘除就能做出來,那leetcode就

LeetCode: 136. 出現數字(C++)

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

LeetCode 136. 出現數字 Python

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

Leetcode-137. 出現數字 II (python3實現)

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

leetcode出現數字

給定一個整數陣列,除了某個元素外其餘元素均出現兩次。請找出這個只出現一次的元素。  備註: 你的演算法應該是一個線性時間複雜度。 你可以不用額外空間來實現它嗎? 初看這個題目,也許大部分同學的思路是儲存各個元素出現的次數,然後找出出現次數為1的元

Leetcode 136.出現數字

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

Leetcode 136. 出現數字(Python3)

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