leetcode--Number of 1 Bits
2016-02-29 16:14
351 查看
Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11’ has binary representation 00000000000000000000000000001011, so the function should return 3.
解:
除了不断%2的解法之外,更有效率的是位操作,容易想到的解法是将num与不同的bit mask相&,得到每一位上的值,再相加,更elegant的方法是将num减一,
- 如果n最后一位是1,n-1则将最后一位置为0,n&(n-1) 将最后一位置0
- 如果n最后一位是0,n&n-1 将n从后往前第一个1置0
也就是n&=n-1 不断删除n为1的位
For example, the 32-bit integer ’11’ has binary representation 00000000000000000000000000001011, so the function should return 3.
解:
除了不断%2的解法之外,更有效率的是位操作,容易想到的解法是将num与不同的bit mask相&,得到每一位上的值,再相加,更elegant的方法是将num减一,
- 如果n最后一位是1,n-1则将最后一位置为0,n&(n-1) 将最后一位置0
- 如果n最后一位是0,n&n-1 将n从后往前第一个1置0
也就是n&=n-1 不断删除n为1的位
class Solution(object): def hammingWeight(self, n): """ :type n: int :rtype: int """ sum=0 while n!=0: n&=(n-1) sum+=1 return sum
相关文章推荐
- AIX5.3(64位)安装tomcat(包括安装JDK)全过程
- javascript函数与事件
- android的ndk开发简介-android学习之旅(93)
- TabLayout和ViewPager简单实现页卡的滑动
- java Executors源码简析
- NEXTVAL 和 CURRVAL 运算符和oracle的sequence设置说明
- gulp压缩js和css
- 第45课:Spark性能优化第一季!
- 机器学习中的训练集,验证集及测试集的关系
- AngularJS简介
- Android Studio——gradle配置(基本知识)
- 安卓菜单的使用系列1:使用java代码显示菜单
- JSP_004_Cookie介绍02—Cookie的最大生命和Cookie的path
- CMFCPropertyGridCtrl 的简单教程
- granfan inflxDB zabbix
- Android中FoldingLayout折叠布局的用法及实战全攻略
- MySQL知识(二十二)——数据备份、还原与迁移
- Oralce备份恢复优秀文摘
- 封装原生TextView
- 怎么查看编译的Linux内核源代码的版本信息