leetcode260
for example:
givennums = [1, 2, 1, 3, 2, 5]
, return[3, 5]
.
note:
the order of the result is not important. so in the above example,[5, 3]
is also correct.
your algorithm should run in linear runtime complexity. could you implement it using only constant space complexity?
首先遍歷陣列,所有數異或,相同的數為0,最終結果是不同的2個數的異或的結果。我們可以知道,兩個不同的數,相異或,結果中必然至少有一位的值是1,即代表2個不同的數至少在某一位上的值是不同的,所以結果才為1。於是,將得到的結果,與1做位與運算,然後將1向左移,從而得到最小的那個位為1的值,使用該值對陣列進行遍歷,分別進行位與運算,根據結果分別放在兩個不同的佇列中,最後講2個結果分別進行異或運算,得到結果即可。因為2個不同的值與他們不同的位上的那個值做與運算的結果是不一樣的,所以可以有效的區分開來,最終兩個佇列中將是乙個單獨的值,和其他都是重複的值,所以直接使用異或就可以很輕鬆的求出來。
語言表達能力有限,可能說的不是很容易讓人明白,上**。
class solution
int i = 1;
while ((temp & i) != i)
i <<= 1;
for (vector::iterator it = nums.begin(); it != nums.end(); ++it)
result.push_back(temp1);
result.push_back(temp2);
return result;
}};
leetcode刷題,總結,記錄,備忘 226
leetcode226題。invert binary tree 倒置二叉樹。想不到這題還有個梗,挺有意思的。我一開始自作聰明,想用乙個棧乙個佇列來做,用中序遍歷,把節點push進棧中,把節點的指push進佇列中,遍歷完之後,分別從棧頂和佇列頂拿出節點和數值,賦值。一開始想著感覺還挺對的,遞交了幾次都...
leetcode刷題,總結,記錄,備忘83
leetcode83.for example,given1 1 2,return1 2.given1 1 2 3 3,return1 2 3.不想說什麼了,比較簡單的題目,大爺的我提了6,7遍才過,因為中間有個流程一直疏忽了,如果當前項值域和下乙個結點的值域相同的話,在將下乙個結點刪掉,即連到下乙個...
leetcode刷題,總結,記錄,備忘202
leetcode202 credits special thanks to mithmatt and ts for adding this problem and creating all test cases.還是比較簡單的題目,雖然我提的次數比較多,又拉低了通過率,真是無情。每次計算如果得到結果...