对该问题进行转换,转换为判断哪个位出现1的次数最多。可以通过遍历数组,从低位到高位判断是否为1,若第一位为1,则将数组ans的第一位自加1,以此来判断哪一个位出现的1最多。代码如下所示
class Solution {
public:
int largestCombination(vector<int>& candidates) {
int length = 8*sizeof(int); //length代表int的位数
int size = candidates.size(); //size代表candidates的长度
vector<int> ans(length,0);
for(int i=0; i < length; i++){
for(int j=0; j < size; j++){
if(candidates[j] >> i & 1) ans[i]++;
}
}
auto ret = max_element(ans.begin(),ans.end());
return *ret;
}
};
最后找到ans容器中最大的数即可。