深度学习
直接上代码吧:
int NumberOf1(int n) { int i; int num=0; for(i=0;i<32;i++) { if((n&(1<<i))!=0) num++; } return num; }
代码很简单,就是按位检查是否为1,如果是,就计数。
绝对最佳答案及分析:
int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1); } return count; }
答案正确:恭喜!您提交的程序通过了所有的测试用例
python代码实现如下:
# -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): # write code here count = 0 if n < 0: n = n & 0xffffffff while n: count += 1 n = (n - 1) & n return count
另类解法:
首先判断n是不是负数,当n为负数的时候,直接用后面的
while
循环会导致死循环,因为负数
向左移位的话最高位补
1
! 因此需要一点点特殊操作,可以将最高位的符号位
1
变成
0
,也就
是n &
0x7FFFFFFF
,这样就把负数转化成正数了,唯一差别就是最高位由
1
变成
0
,因为少了
一个
1
,所以count加
1
。之后再按照
while
循环里处理正数的方法来操作就可以啦!
最基本最简单的解法:
//超级简单容易理解 //&(与)
class Solution { public: int NumberOf1(int n) { int count=0; for(int i=0;i<32;i++){ if(n>>i&1) count++; } return count; } };
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=1231