⭐算法OJ⭐位操作实战【计数】(C++ 实现)

191. Number of 1 Bits

Given a positive integer n, write a function that returns the number of set bits in its binary representation (also known as the Hamming weight).

cpp 复制代码
int hammingWeight(uint32_t n) {
    int count = 0;
    while (n) {
        count += n & 1;  // 检查最低位是否为 1
        n >>= 1;         // 右移一位
    }
    return count;
}

int main() {
    uint32_t n = 11; // 二进制为 1011
    cout << "Number of set bits: " << hammingWeight(n) << endl; // 输出 3
    return 0;
}

1356. Sort Integers by The Number of 1 Bits

You are given an integer array arr. Sort the integers in the array in ascending order by the number of 1's in their binary representation and in case of two or more integers have the same number of 1's you have to sort them in ascending order.

Return the array after sorting it.

给定一个整数数组 arr,要求按照以下规则对数组进行排序:

  • 按二进制表示中 1 的个数升序排序。
  • 如果两个数的二进制表示中 1 的个数相同,则按数值大小升序排序。

最后返回排序后的数组。

Easy Understanding Version

cpp 复制代码
int countOnes(int num) {
    int count = 0;
    while (num) {
        count += num % 2;
        num = num / 2;
    }
    return count;
}

bool wayToSort(int i, int j) {
    int countA = countOnes(i);
    int countB = countOnes(j);
    if (countA == countB) {
        return i < j;
    }
    return cntA < cntB;
}
vector<int> sortByBits(vector<int>& arr) {
    sort(arr.begin(), arr.end(), wayToSort);
    return arr;
}

Compact Version

cpp 复制代码
int countOnes(int n) {
    return __builtin_popcount(n);  // 计算二进制中 1 的个数
}

vector<int> sortByBits(vector<int>& arr) {
    sort(arr.begin(), arr.end(), [](int a, int b) {
        int countA = countOnes(a);
        int countB = countOnes(b);
        if (countA == countB) {
            return a < b;  // 如果 1 的个数相同,按数值升序排序
        }
        return countA < countB;  // 否则按 1 的个数升序排序
    });
    return arr;
}
相关推荐
点点滴滴的记录3 分钟前
算法之数据结构
算法
缘来的精彩8 分钟前
Android framwork 详细开发指南
android·c++·framwork
玉带湖水位记录员24 分钟前
C++多线程编程——条件变量wait_for的返回值含义
c++
点点滴滴的记录44 分钟前
算法之排序算法
java·算法·排序算法
努力的小帅1 小时前
c/c++内存管理
开发语言·c++
想做后端的小C1 小时前
std::sort 排序算法本质
数据结构·算法·排序算法
ceffans1 小时前
PDF文档中表格以及形状解析
开发语言·c++·windows·pdf
pzn25062 小时前
蓝桥杯练习题2(C/C++)
算法·职场和发展·蓝桥杯
算法工程师y2 小时前
Python数字图像处理:直方图均衡化
开发语言·图像处理·python·算法
心态与习惯2 小时前
c++ 中的容器 vector 与数组 array
c++·容器·vector·array