LeetCode 136. 只出現一次的數字【c++/java詳細題解】
1、題目
給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
2、思路
(位運算) O ( n ) O(n)O(n)
異或運算有以下三個性質:
1、0^0 = 0 ,0^1 = 1,0異或任何數=任何數
2、1^0 = 1 ,1^1 = 0,1異或任何數 = 任何數取反
3、任何數異或自己=把自己置0,即 a^a=0
因此這道題可以用位運算來做,過程如下:
1、兩個相同的元素經過異或之後會變為0。
2、將陣列所有元素異或在一起即可得到出現 1 次的元素值。
時間複雜度分析: O ( n ) O(n)O(n),其中 n nn 是陣列長度。
3、c++程式碼
class Solution {
public: 大連無痛人流醫院
int singleNumber(vector& nums) {
int res = 0;
for(int i = 0; i < nums.size(); i++) res ^= nums[i];
return res;
}
};
4、java程式碼
class Solution {
public int singleNumber(int[] nums) {
int res = 0;
for(int i = 0;i < nums.length;i ++) res ^= nums[i];
return res;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005147/viewspace-2786823/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 136. 只出現一次的數字
- leetcode力扣136.只出現一次的數字LeetCode力扣
- Leetcode 137:只出現一次的數字 II(最詳細的解法!!!)LeetCode
- LeetCode 只出現一次的數字LeetCode
- LeetCode 只出現一次的數字IILeetCode
- LeetCode 只出現一次的數字IIILeetCode
- LeetCode每日一題:只出現一次的數字(No.136)LeetCode每日一題
- LeetCode之只出現一次的數字-SwiftLeetCodeSwift
- LeetCode136 只出現一次的數字LeetCode
- leetcode136. 只出現一次數字LeetCode
- 只出現一次的數字 II
- 找出陣列中只出現一次的數字陣列
- JZ-040-陣列中只出現一次的數字陣列
- 劍指offer 陣列中只出現一次的數字陣列
- 《劍指offer》:[40]陣列中只出現一次的數字陣列
- 【劍指offer】陣列中只出現一次的數字(1)陣列
- 【劍指offer】陣列中只出現一次的數字(2)陣列
- java 數字金字塔,含詳細解說Java
- 第一個只出現一次的字元——Java字元Java
- LeetCode題庫13. 羅馬數字轉整數(c++實現)LeetCodeC++
- [題解] 條件變數實現數字的交替輸出變數
- 在其它數都出現k次的陣列中找到只出現一次的數陣列
- 第一次只出現一次的字元字元
- mysqldump匯出引數詳細解釋MySql
- Leetcode:2. 兩數相加(C++帶詳細註釋)LeetCodeC++
- leetcode刷題之1160拼寫單詞 java題解(超詳細)LeetCodeJava
- C++/Java小白解Leetcode題,發現了知識盲區……C++JavaLeetCode
- 詳解 LeetCode_007_整數反轉(Java 實現)LeetCodeJava
- [劍指Offer]面試題35:第一個只出現一次的字元面試題字元
- java解決數字黑洞問題Java
- leetcode 831題解【C++/Java/Python】LeetCodeC++JavaPython
- 題解1787:小O的數字 (Java描述)Java
- LeetCode 299 猜數字遊戲 Java實現LeetCode遊戲Java
- 一次數獨生成及解題演算法的剖析(Java實現)演算法Java
- 給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。陣列
- 超詳細https握手與數字簽名講解HTTP
- [演算法練習及思路-leetcode劍指offer(Java解法)]No50.第一個只出現一次的字元演算法LeetCodeJava字元
- 微軟面試題: LeetCode 91. 解碼方法 出現次數:3微軟面試題LeetCode