码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode191 Number of 1 Bit

时间:2015-07-12 21:33:41      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:

题意:一个int类型正整数,求它的二进制形式有多少个1

思路:除2递归,可以解出,看了discuss里面有个解更牛,一行结束战斗,是用n&(n-1)再递归,其实并不是很懂怎么想出来这么做的,可能是自己对二进制的处理根本不怎么了解吧,但是这样做结果是对的

代码:

int hammingWeight(uint32_t n) 
{
    if(n == 0)
        return 0;
    if(n % 2 == 1)
        return 1 + hammingWeight(n/2);
    else 
        return hammingWeight(n/2);
}

大神代码是这样的:

 int hammingWeight(uint32_t n) {
    return n == 0 ? 0 : 1 + hammingWeight(n & (n - 1));
}

 

leetcode191 Number of 1 Bit

标签:

原文地址:http://www.cnblogs.com/puyangsky/p/4641547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!