E1356.根据数字二进制下 1 的数目排序
bit manipulation, https://leetcode.cn/problems/sort-integers-by-the-number-of-1-bits/
思路:学会了内置的 __builtin_popcount 用于计算二进制中 1 的个数
cpp
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
vector<int> sortByBits(vector<int>& arr) {
sort(arr.begin(), arr.end(), [](int a, int b) {
// __builtin_popcount 用于计算一个整数的二进制表示中 1 的个数
// 可用 while(n) { if (n & 1) count++; n >>= 1; } 实现
int count_a = __builtin_popcount(a);
int count_b = __builtin_popcount(b);
if (count_a == count_b) {
return a < b;
}
return count_a < count_b;
});
return arr;
}
};用时5min