整數型陣列中,每個元素均出現兩次,除了乙個元素例外,如何找出這個元素?
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.如果已經知道只有一台機器宕機 也就是說只有乙個備份丟失 呢?如果有兩台機...