異或運算在程式設計中的應用

2021-09-28 23:59:13 字數 1703 閱讀 6923

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。按位運算如 優先順序位於關係運算子之後,邏輯運算子之前。好像不經常強調...