当前位置: 首页 > news >正文

2275. 按位与结果大于零的最长组合

2275. 按位与结果大于零的最长组合
题目:给定 candidates 数组,计算数组的每种组合下 按位与 的结果,返回大于 0 的最长组合的长度。
例如:candidates = [16,17,71,62,12,24,14][62,12,24,14] 是长度最长的且按位与的结果大于 0 的组合之一。

当我们从二进制的位数出发,只要组合中第 k 位的所有元素按位与的结果为 1,那么这个组合就是大于 0 的。
那么遍历数组,统计在第 k 位与 1 的按位与结果为 1 的元素个数,就可以得出这个组合的长度。而且我们还需要一个变量在遍历过程纪录最大的长度。
其中对于二进制位的范围,题目给定的元素取值范围在 [ 1 , 1 0 7 ] [1,10^7] [1,107] 闭区间内,同时我们有 2 23 < 1 0 7 < 2 24 2^{23} < 10^7 < 2^{24} 223<107<224,因此我们只需要遍历 24 个二进制位即可。

class Solution {
public:int largestCombination(vector<int>& candidates) {int ans = 0;for (int i=0; i < 24; i++) {int tt = 0;// 统计在第 i 位时,与 1 按位与结果为 1 的元素个数for (auto n: candidates) if (1 & (n >> i)) tt++;  ans = max(ans, tt);}return ans;}
};
/*** @param {number[]} candidates* @return {number}*/
var largestCombination = function(candidates) {let ans = 0;for (let i=0; i < 24; i++) {let tt = 0;for (n of candidates)  tt += ((n >> i) & 1);ans = Math.max(tt, ans);}return ans;
};

http://www.mrgr.cn/news/49555.html

相关文章:

  • 生信服务器配置:优化生物信息学数据处理的最佳实践
  • Redis 典型应用之缓存
  • 问题专题 编译问题
  • 【Java数据结构】二叉树
  • ZED相机的使用
  • 基于Arduino的红外遥控智能小车实现方法
  • C++STL(2)
  • Gin框架教程01:创建一个简单的 Gin 应用
  • 新媒体运营基本步骤
  • EditPlus安装使用
  • R语言绘制聚类热图
  • shell错误修改
  • Xilinx远程固件升级(一)——QuickBoot方案
  • 伯努利分布(Bernoulli distribution)的两次成功之间间隔次数的分布
  • git error: You have not concluded your merge (MERGE_HEAD exists).
  • Lumerical脚本语言——材料数据库(Material database)
  • javaScript if else factory function
  • 利用弹性盒子完成移动端布局(第二次实验作业)
  • 带你了解linux:学习第十六课 linux 之 Ftp Sftp
  • python之selenium接管打开的谷歌浏览器窗口——隐藏爬虫特征,跳过登陆弹窗验证