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));
统计最高有多少位。📎 参考
- 无