计算在一个 32 位的整数的二进制表式中有多少个 1. 样例 给定 32 (100000),返回 1 给定 5 (101),返回 2 给定 1023 (111111111),返回 9 挑战 If the integer is n bits with m 1 bits. Can you do it in O(m) time? 标签 二进制 比特位操作 分析:将num-1与num做&操作将会去掉一个1,结果赋值给num,循环下去得到1的个数,若num中1的个数为m,则时间复杂度为O(m)。 class Solution { public: /** * @param num: an integer * @return: an integer, the number of ones in num */ int countOnes(int num) { // write your code here int count=0; while(num){ count++; num&=(num-1); } return count; } }; 如有问题请留言。 如有帮助请顶一个,你们的支持是我最大的动力。 文章均可以转载,但请注明文章链接,谢谢。