10二进制中1的个数
来源:互联网 发布:网络投稿 编辑:程序博客网 时间:2024/04/30 07:09
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路 :按位和1做与运算,如果结果为1则计数,为0则跳过,>>为右移,但此方法不适合输入为负数
class Solution: def NumberOf1(self, n): # write code here count = 0 while(n): if n&1: count = count + 1 n = n >> 1 return count
更为简单的方法:把一个整数减1后与原有整数做与运算,相当于把整数最右边的一个1变为了0,每循环一次减去一个1
class Solution: def NumberOf1(self, n): # write code here count = 0 if n < 0: n = n & 0xffffffff while n != 0: count= count + 1 n = (n-1)&n return count
类似问题:
1、用一条语句判断是否为2的次方,2的次方只有一个1,(n-1)&n后变为0
2、改变m的多少位可以得到n,将m和n异或,异或的结果不同为1,相同为0,统计异或后数字中1的个数即可
阅读全文
0 0
- 10_二进制中1的个数
- 10_NumberOf1InBinary二进制中1的个数
- 10、二进制中1的个数
- 10、二进制中1的个数
- 10_二进制中1的个数
- 10二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- MongoDB全量迁移断点续传功能学习与实现
- [BZOJ]3144: [Hnoi2013]切糕 最小割
- 16. 3Sum Closest
- VIM常用快捷键
- Oracle的Package的作用及用法
- 10二进制中1的个数
- C#设计模式总结
- coscos2dx 导出Android安装包详解
- ZigZag Conversion(算法分析week4)
- input输入框的常用属性
- springMvc注解之@ResponseBody和@RequestBody详解
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- VS2012 启用非托管调试时不允许更改
- ios 堵塞提示框 已经deprecated 在ios 9.0