本文主要是介绍腾讯面试中一道算法题:一个数N 的2进制表现形式中1的个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是一个很经典的算法题,方法有很多,这里只写自己会的几个。
方法一 移位
算法:
int bitCont(unsigned int n)
{
int c=0; //1的个数
while(n>0)
{
c+=n&1;
n>>=1; //右移1位,相当于减一
}
return c;
}
通过移位,算法简单易懂,就不做详细讲解了。注意循环次数等于n的位数,若n是32位的,则循环32次。
方法二
算法:
int bitCount(unsigned int n)
{
int c=0; //1的个数
while(n>0)
{
c++;
n=n&(n-1);
}
}
该方法运算速度快,与1的个数有关,同N的大小无关
这篇关于腾讯面试中一道算法题:一个数N 的2进制表现形式中1的个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!