1.異或運算
十進位制的異或運算,先轉成二進位制進行異或,按位進行比較,對應位置相同則為0,對應位置不同則為1,,再從異或結果轉成十進位制。
python中:
1 ^ 1 = 0
1 ^ 2 = 3
1 ^ 0 = 1
0 ^ 1 = 1
1 的二進位制0000 0001
2 的二進位制0000 0010
1 ^ 2 的二進位制是:0000 0011 換算成十進位制為3
異或的交換律 1 ^ 0 = 0 ^ 1
異或的結合律 1 ^ 2 ^ 3 = 1 ^ (2 ^ 3)
乙個非空整數列表,除了某個元素只出現一次外,其餘每個元素均出現兩次,找到只出現一次的元素,leetcode136例如 [1,2,3,4,3,2,1]
異或的結合律和交換律
1 ^ 2 ^ 3 ^ 4 ^ 3 ^ 2 ^ 1 = 1 ^ 1 ^ 2 ^ 2 ^ 3 ^ 3 ^ 4 = 0 ^ 4 = 4
defsolve(li):
temp =li[0]
for i in range(1,len(li)):
temp = temp ^li[i]
(temp)
結果:4
一般解法:
def solve(li):for i in range(len(li)):
ret = li.count(li[i])
if ret == 1:
print(li[i])
solve([1,2,3,4,3,2,1])
結果:4
1 - n 放在含有 n + 1 個元素的列表中,只有唯一的乙個元素值重複,其他均只出現一次,每個列表元素只能訪問一次,設計乙個演算法,將它找出來,不能使用輔助儲存空間 leetcode 287分析:找出重複的元素。1-5個元素的列表-- [1,2,3,4,5]
5+1個元素的列表---[0,1,2,3,4,5]
[1,2,3,3,4,5] 找出3
同樣的異或結合律和交換律
0 ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 1 ^ 2 ^ 3 ^ 3 ^ 4 ^ 5思路:乙個數奇數次異或自己就是本身,偶數次異或自己就是0,要找出3,就讓3自己異或自己奇數次。其他數異或自己偶數次,就可以了。
0 ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 1 ^ 2 ^ 3 ^ 3 ^ 4 ^ 5 = 1 ^ 1 ^ 2 ^ 2 ^ 0 ^ 3 ^ 3 ^ 3 ^ 4 ^ 4 ^ 5 ^ 5 = 3
defsove(li):
ret =0
temp_li = [x for x in
range(0,len(li)]
for i in
range(0, len(temp_li))
ret = ret ^ li[i] ^temp_li[i]
(ret)
sove([1,2,3,3,4,5])
結果:3
2.按位運算
按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0
a = 1111 0100
b = 1001 1011
a & b = 1001 0000
Python3 基礎(運算子)
以下假設變數a為10,變數b為21 按位運算子是把數字看作二進位制來進行計算的。python中的按位運算法則如下 下表中變數 a 為 60,b 為 13二進位制格式如下 python語言支援邏輯運算子,以下假設變數 a 為 10,b為 20 除了以上的一些運算子之外,python還支援成員運算子,測...
python3運算子 Python3 運算子
python3 運算子 python3 支援以下型別運算子 算術運算子 比較 關係 運算子 賦值運算子 邏輯運算子 位運算子 成員運算子 身份運算子 運算子優先順序 算術運算 a b 2,3 運算子說明 示例加 將兩個物件相加 a b 結果 5 減 將兩個物件相減 a b 結果 1 乘 將兩個物件相...
python3運算子 Python3運算子
什麼是運算子?本章節主要說明python的運算子。舉個簡單的例子 4 5 9。例子中,4 和 5 被稱為運算元,稱為運算子。python語言支援以下型別的運算子 算術運算子 比較 關係 運算子 賦值運算子 邏輯運算子 位運算子 成員運算子 身份運算子 運算子優先順序 接下來讓我們乙個個來學習pyth...