Single Number解題思路

2021-08-09 15:38:50 字數 817 閱讀 4576

整數型陣列中,每個元素均出現兩次,除了乙個元素例外,如何找出這個元素?

class solution 

for (map

::iterator it = m.begin(); it!= m.end(); ++it )

}return -1;

}};

時間複雜度為o(n*n),空間複雜度為0(不需要額外空間)

class solution 

}return a[n-1];

}};

因為a xor a = 0,且xor運算是可交換的,於是,對於例項就會有這樣的結果:

(2^1^4^5^2^4^1) =>

((2^2)^(1^1)^(4^4)^(5)) =>

(0^0^0^5) =>

5

演算法複雜度為o(n),且空間複雜度為0(不需要額外空間)

class solution 

};

#include 

#include

#include

#include

using

namespace

std;

int main ();

int length = sizeof(a)/sizeof(int);

int num;

num = solu.singlenumber(a,length);

cout

<< num 0;}

LeetCode PlusOne (附帶解題思路)

給定乙個非負整數組成的非空陣列,在該數的基礎上加一,返回乙個新的陣列。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,...

POJ 1171 Letter Game 解題思路

原題鏈結 題目意思大致如下 首先給你乙個可用字符集,比如 prog 那麼我們需要計算的單詞,都是在這個集合內的元素,否則單詞的權值是0 那麼可以組成的單詞rog pog rop等等 計算單詞的最大權值,但是單詞可以拼接起來。但是拼接起來後還是要在可用集合中,且個數都不能超支。下面是題目對用的程式 1...

快速找出故障機器(single number)

簡單起見,假設每個機器儲存乙個標號為id的記錄 id是小於十億的整數 假設每份資料都儲存兩個備份,這樣就有兩個機器儲存了同樣的資料。1.在某個時間,如果得到乙個資料檔案id的列表,是否能夠快速地找出這個表中僅出現一次的id?2.如果已經知道只有一台機器宕機 也就是說只有乙個備份丟失 呢?如果有兩台機...