题目描述:
LeetCode第1356题 根据数字二进制下1的数目排序
类型简单
思路:
非常暴力的解法,花费很多时间
首先把每个数的二进制下1的个数计算出来
然后再把他们进行排序
代码如下:
class Solution {
public:
int count(int num){
int s=0;
while(num!=0){
if(num%2==1){
s++;
num/=2;}
else num/=2;
}
return s;
}
vector<int> sortByBits(vector<int>& arr) {
sort(arr.begin(),arr.end());
vector<int>res;
map<int,vector<int>>num;
vector<int>ber;
for(int i=arr.size()-1;i>=0;i--){
num[count(arr[i])].push_back(arr[i]);
ber.push_back(count(arr[i]));
}
sort(ber.begin(),ber.end());
for(int i=0;i<ber.size();i++){
res.push_back(num[ber[i]][num[ber[i]].size()-1]);
num[ber[i]].pop_back();
}
return res;
}
};