心情複雜,除了位運算??,什麼也說不出來。位運算符號符號一開始想用雜湊表,後來想排序,怎麼都不能滿足要求的複雜度。
後來真理大門開啟了——異或
a^b^a=a,將所有元素進行異或運算,剩下的就是所求。
名稱用法&與
兩個位都為1時,結果才為1.|或
兩個位都為0時,結果才為0.^異或
兩個位相同為0,相異為1.~取反
0變1,1變0.
<<
左移各二進位全部左移若干位,高位丟棄,低位補0.
>>
右移各二進位全部右移若干位,對無符號數,高位補0,有符號數,各編譯器不同.
位運算**
int
singlenumber
(vector<
int>
& nums)
return ans;
}
又試了一波排序執行時間從8 upup到了24ms
int
singlenumber
(vector<
int>
& nums)
return nums[nums.
size()
-1];
}
leetcode 136 只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4 class solution return r...
Leetcode 136 只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 一般這種不使用額外空間,時間複雜度低的,用按...
LeetCode 136 只出現一次的數字
136.只出現一次的數字 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例1 輸入 2,2,1 輸出 1 示例2 輸入 4,1,2,1,2 輸出 4 使用集合中沒有重複元素...