2025-11-26 20:37:54
发布于:浙江
class TrieNode:
def __init__(self):
self.children = [None, None] # 0和1的子节点
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, num):
node = self.root
# 从最高位(31位)到最低位遍历
for i in range(31, -1, -1):
bit = (num >> i) & 1
if not node.children[bit]:
node.children[bit] = TrieNode()
node = node.children[bit]
def query(self, num):
if not self.root.children[0] and not self.root.children[1]:
return 0 # 字典树为空
node = self.root
max_xor = 0
for i in range(31, -1, -1):
bit = (num >> i) & 1
desired_bit = 1 - bit # 期望的相反位
if node.children[desired_bit]:
max_xor |= (1 << i)
node = node.children[desired_bit]
else:
node = node.children[bit]
return max_xor
def find_max_xor(nums):
trie = Trie()
max_result = 0
trie.insert(nums[0]) # 先插入第一个数
for num in nums[1:]:
current_max = trie.query(num)
if current_max > max_result:
max_result = current_max
trie.insert(num)
return max_result
# 读取输入
n = int(input())
nums = list(map(int, input().split()))
# 计算并输出结果
print(find_max_xor(nums))
不对??
全部评论 1
AI?
2025-11-26 来自 浙江
0咋做
2025-11-27 来自 浙江
0一眼ai
2025-11-27 来自 四川
0不是
2025-11-27 来自 浙江
0






















有帮助,赞一个