用 Python 编写程序来计算元素和为 2 的幂的索引对数量
pythonserver side programmingprogramming更新于 2025/12/24 20:28:17
假设我们有一个名为 nums 的数字列表。我们必须找到索引对 i, j 的数量,其中 i < j 使得 nums[i] + nums[j] 等于 2^k,其中 0 >= k。
因此,如果输入为 nums = [1, 2, 6, 3, 5],则输出为 3,因为有三对和,如 (6, 2):和为 8、(5, 3):和为 8 和 (1, 3) 和为 4
为了解决这个问题,我们将遵循以下步骤 −
res := 0
c := 包含每个元素频率的映射
对于 nums 中的每个 x,执行
对于 0 到 31 范围内的 j,执行
res := res + c[(2^j) - x]
c[x] := c[x] + 1
返回 res
示例
让我们看看下面的实现以便更好地理解
from collections import Counter def solve(nums): res, c = 0, Counter() for x in nums: for j in range(32): res += c[(1 << j) - x] c[x] += 1 return res nums = [1, 2, 6, 3, 5] print(solve(nums))
输入
[1, 2, 6, 3, 5]
输出
3
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

