第一次发文
如果有那里不妥当请告知
最近在LEETCODE刷提 遇到一题求 list 里面任意两数字XOR最大值
题目连结在这边
https://goo.gl/HPH4Sm
这题最快的解答是
class Solution:
def findMaximumXOR(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
ans = 0
for bit in range(31, -1, -1) :
ans = (ans << 1) + 1
pre = set()
for n in nums :
p = (n >> bit) & ans
if p in pre : #1
break #2
pre.add(ans - p) #3
else : #4
ans -= 1
return ans
我的问题在我标#1-4的地方
我不太明白这边的if else statement 怎么运作的(特别是#4)
一开始我以为是当if p not in pre:
就会直接跳到#4
但是好像不太对
请问有人可以跟我说明一下吗?
非常感谢!