(leetcode刷題總結)
目錄
位運算(只出現一次的數字) 前言
一、題目示例
二、解題思路
1.異或運算
2.思維解讀:
3.**如下: 總結
很早就學過位運算,但一直沒用應用過,本題使用了異或運算相關性質。
只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
使用異或運算結合律與交換律的性質:
1、將陣列中第乙個數與0異或,得到他本身。
2、繼續與陣列中其他數字挨個異或,
3、最後得到的數字就是出現了一次的數字
解析:有些朋友可能會陷入思維誤區,性質不同異或為1,這裡指的是二進位制形式下的計算(這是位運算),同乙個位上數字相同的都消除了。
class solution {
public:
int singlenumber(vector& nums) { //資料都已經存在陣列中
int sign= 0; //定義標記符號
for(int i=0;i
leetcode 只出現一次的數字(異或運算)
只出現一次的數字 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 這道題有乙個重要條件 出現...
劍指56 陣列中只出現一次的數字 異或 位運算
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。空間複雜度o 1 時間複雜度o n 思路 乙個整型陣列只有乙個數字出現一次 其他出現2次 考慮異或全部得到唯一的這個數字。同理,將問題分組成2組,每組保證有乙個出現1次的數,且每組中其他數都出現2次。考慮通過...
位運算 只出現一次的的數字
異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...