1. 只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
題目**
2. 缺失數字
給定乙個包含 0, 1, 2, …, n 中 n 個數的序列,找出 0 … n 中沒有出現在序列中的那個數。
示例 1:
輸入: [3,0,1]
輸出: 2
示例 2:
輸入: [9,6,4,2,3,5,7,0,1]
輸出: 8
說明:你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?
題目**
3. 找不同
給定兩個字串 s 和 t,它們只包含小寫字母。
字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。
請找出在 t 中被新增的字母。
示例:輸入:
s = 「abcd」
t = 「abcde」
輸出:e
1. 只出現一次的數字
只出現一次的數字的題型這裡使用異或的方法解決,同樣地,如果問 出現奇數次的乙個數字(其他數字都出現偶數次)也可用同樣的方法。或者採用雜湊表的方式,請讀者思考雜湊表的求解過程。之後會更新關於雜湊表的相關解法。
class
solution
return result;
}}
2. 缺失數字
這裡列舉了三種常見的方法,而且這三種方法相對其他方法較為高效。方法一和方法三原理相同,只是計算過程不同。而方法二是採用異或的方法,這樣可以提高程式執行的效率。並且其他兩個題目也可以仿照這三種方法進行求解。
class
solution
result=result+nums.length;
return result;
}}
class
solution
result=result^nums.length;
return result;
}}
class
solution
return nums.length *
(nums.length +1)
/2- sum;
}}
3. 找不同
class
solution
result=result^t.
charat
(t.length()
-1);
return
(char
)result;
}}
由於異或運算屬於二進位制的底層機器運算,所以其效率比一般的計算過程要高,這類題目有人採用排序等直接的方法,這樣提高了時間複雜度;或者重新建立乙個新的陣列,這樣提高了空間複雜度。 C語言異或運算在程式設計中的妙用
異或運算子 也稱xor運算子。它的規則是若參加運算的兩個二進位同號,則結果為0 假 異號則為1 真 即0 0 0,0 1 1,1 1 0。性質 1 與1異或會翻轉 2 與0異或保持不變 3 乙個數異或它本身等於0 4 每一位的結果只與該位有關。應用 1 使特定位翻轉 假設有01110101,現在想讓...
C 異或運算在演算法中的經典運用
c 異或運算在演算法中的經典運用 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字?這是經典的演算法題,乍看這個題的思路特別多。比如首先排序 然後在查詢不同的資料就能找到這兩個數字,這種實現方法的時間複雜度應該是在o nlgn 因為比較排序的演算法最好的時間...
異或 運算的應用
1.異或運算 關於異或,有兩種計算。一是邏輯異或,一是按位異或。所謂邏輯異或就是運算數是true或者false。比如p1 true,p2 true,p1 p2。按位異或則是將變數轉化為二進位制,每一位分別異或。相同為0,不同為1。按位運算如 優先順序位於關係運算子之後,邏輯運算子之前。好像不經常強調...