2025/1/12 力扣每日一题(2275.按位与结果大于零的最长组合)
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/largest-combination-with-bitwise-and-greater-than-zero/description/?envType=daily-question&envId=2025-01-12
题目:
对数组 nums 执行 按位与 相当于对数组 nums 中的所有整数执行 按位与 。
例如,对 nums = [1, 5, 3] 来说,按位与等于 1 & 5 & 3 = 1 。
同样,对 nums = [7] 而言,按位与等于 7 。
给你一个正整数数组 candidates 。计算 candidates 中的数字每种组合下 按位与 的结果。
返回按位与结果大于 0 的 最长 组合的长度。
解题思路:
按位与:二进制运算的一种,如果两个二进制数都为1,按位与后结果为1,否则为0
因此,可以依次按每一位遍历nums数组中每个数,如果这一位是1,则可以取这个数,否则不取,最后ans取最大值
答案代码:
class Solution {
public:
int largestCombination(vector
int n = candidates.size(),ans = -1;
for(int i = 0;i <= 24;i++){
int cnt = 0;
for(int j = 0;j < n;j++){
cnt += candidates[j] >> i & 1;
}
ans = max(ans,cnt);
}
return ans;
}
};
代码分析:
题目数据给的是10^7,转为二进制最多24位,因此第一重循环的范围设置为24,第二重循环遍历数组每个元素的这一位,如果是1,就加上,不是就不取
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!