技巧性笔试题目总结

此贴用来记录牛客网刷题算法记录,其中以技巧性的选择填空题为主,涉及到的算法程序题会另开一贴!

计算二进制中1的个数

方案一:

while (n >0 ) {
      count ++;
      n = n & (n-1);
}

方案二:

int (unsigned int n)
{
    n = (n &0x55555555) + ((n >>1) &0x55555555) ;
    n = (n &0x33333333) + ((n >>2) &0x33333333) ;
    n = (n &0x0f0f0f0f) + ((n >>4) &0x0f0f0f0f) ;
    n = (n &0x00ff00ff) + ((n >>8) &0x00ff00ff) ;
    n = (n &0x0000ffff) + ((n >>16) &0x0000ffff) ;

    return n ;
}

To be continued…