资讯动态

LeetCode 数组中两个元素的最大与题解

发布时间:2026/10/26 22:20:16 来源:尧图企业网站定制
LeetCode 数组中两个元素的最大与题解题目描述给定一个非空整数数组找出数组中最大的按位与结果即所有元素进行按位与运算的结果。示例输入nums [16,8,4]输出0输入nums [4,6,7]输出4解题思路方法位运算思路使用位运算来解决这个问题。找出所有数字的公共前缀。从左到右遍历每一位如果这一位上所有数字都是 1则该位为 1。否则该位为 0。最终结果就是公共前缀对应的数字。复杂度分析时间复杂度O(n * k)其中 n 是数组长度k 是整数的位数。空间复杂度O(1)。代码实现方法位运算# 数组中两个元素的最大与位运算 def largest_xor(nums): result 0 for i in range(31, -1, -1): result (1 i) 1 if i 31 else 0 break mask 0 for i in range(31, -1, -1): mask | (1 i) seen set() for num in nums: seen.add(num mask) if len(seen) 1: mask ^ (1 i) return mask # 测试 def test_largest_xor(): nums [16, 8, 4] print(largest_xor(nums)) # 输出0 nums [4, 6, 7] print(largest_xor(nums)) # 输出4 if __name__ __main__: test_largest_xor()测试用例测试用例 1基本情况1输入nums [16,8,4]输出0测试用例 2基本情况2输入nums [4,6,7]输出4总结数组中两个元素的最大与是一个经典的位运算问题它可以通过位运算来高效地解决。位运算的核心思想是找出所有数字的公共前缀。掌握位运算的使用方法对于解决类似的问题非常重要。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑