函数详解
该函数是C++自带的库函数,内部实现是用查表实现的。
作用:统计数字在二进制下“1”的个数。
相关题目
LeetCode:根据数字二进制下 1 的数目排序
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。
如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。
请你返回排序后的数组。
解题思路
在创建一个数组,如果数字是x,那么就在数组的第x位填写二进制中“1”的个数。最后进行排序,返回数组。
C++代码
class Solution {
#define N 10010
int bit[N];
public:
vector<int> sortByBits(vector<int>& arr) {
for (int i=0;i<arr.size();i++) bit[arr[i]]=__builtin_popcount(arr[i]);
sort(arr.begin(),arr.end(),[&](int x,int y){
return bit[x]==bit[y]?x<y:bit[x]<bit[y];
});
return arr;
}
};
本文介绍C++内置函数__builtin_popcount(),用于计算整数二进制表示中1的个数,并展示如何利用此函数对数组进行排序。具体包括函数原理、LeetCode题目解析及C++代码实现。
4734

被折叠的 条评论
为什么被折叠?



