做软测的网站,网站答辩ppt怎么做,文化设计有限公司,潮州seo建站题目描述 题目分析
很自然地想到了二进制枚举#xff0c;直接循环检查每一个二进制位。
class Solution {
public:int hammingWeight(uint32_t n) {int ret 0;uint32_t t 1;for (int i 0; i 32; i, t 1) {if (n t) {ret;}}return ret;}
};AC之后看了…题目描述 题目分析
很自然地想到了二进制枚举直接循环检查每一个二进制位。
class Solution {
public:int hammingWeight(uint32_t n) {int ret 0;uint32_t t 1;for (int i 0; i 32; i, t 1) {if (n t) {ret;}}return ret;}
};AC之后看了一下题解发现还有更妙的方法使用一个trickn(n-1)的结果是把n的二进制位的最低位从1变为0。其实挺好理解的因为n-1肯定会将最低位1变成0并把之后所有位变为1使用操作以后就可以消除掉。
有了上面的技巧我们只需要不断地将n变为n(n-1)
class Solution {
public:int hammingWeight(uint32_t n) {int ret 0;while(n) { //必须首先判断n是否为0ret;n (n - 1);}return ret;}
};