🗒️2275. 按位与结果大于零的最长组合
2025-2-11
| 2025-2-11
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Feb 11, 2025 07:29 AM
对数组 nums 执行 按位与 相当于对数组 nums 中的所有整数执行 按位与 。
  • 例如,对 nums = [1, 5, 3] 来说,按位与等于 1 & 5 & 3 = 1 。
  • 同样,对 nums = [7] 而言,按位与等于 7 。
给你一个正整数数组 candidates 。计算 candidates 中的数字每种组合下 按位与 的结果。
返回按位与结果大于 0 的 最长 组合的长度

位运算——拆位 / 贡献法

这题感觉是一个脑筋急转弯的题。我们需要将思维转换一下,就很好理解了。问题是我们的数大于 0。按照位运算的思维,只要有一位有 1 就 OK 了,因此将问题转换为,求某一数位有最多的 1 的数量。
优化:使用 int m = bit_width((unsigned) ranges::max(candidates)); 统计最高有多少位。

📎 参考

  • 【题单】位运算
  • 1863. 找出所有子集的异或总和再求和2425. 所有数对的异或和
    Loading...