異或運算(^)
異或是一個數學運算符,應用於邏輯運算。
異或運算是一種二進制運算:
1^1=0
0^0=0
1^0=1
0^1=1
異或運算法則
- a ^ b = b ^ a
- a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c
- d = a ^ b ^ c 可以推出 a = d ^ b ^ c
- a ^ b ^ a = b
算法應用
有序數組中的單一元素
給你一個僅由整數組成的有序數組,其中每個元素都會出現兩次,唯有一個數只會出現一次。
請你找出並返回只出現一次的那個數。
解答:
相同的兩個數異或=0,異或運算符又具有交換性。
我們可以通過將數組中的所有整數進行異或運算,由於異或的性質,最后得出的值即為只出現一次的那個數
class Solution {
public int singleNonDuplicate(int[] nums) {
int result = nums[0];
for (int i = 1; i < nums.length; i++) {
result = result ^ nums[i];
}
return result;
}
}
小Tips
偶數+1=奇數-1=整數^1
