剑指offer--(13)二进制中1的个数
2017-09-17 08:04
211 查看
剑指offer–(13)二进制中1的个数
问题描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路描述
利用”与”操作,不断清除n的二进制表示中最右边的1,同时累加计数器,直至n为0,这种方法速度比较快,其运算次数与输入n的大小无关,只与n中1的个数有关。如果n的二进制表示中有M个1,那么这个方法只需要循环k次即可,所以其时间复杂度O(M),eg: 111&110 =110 消除了111最右边的1。
代码实现:
public class Solution { public int NumberOf1(int n) { int num=0; while(n!=0){ n=n&(n-1);//消除最右边的1 num++; } return num; } }
相关文章推荐
- 剑指offer 之 二进制中1的个数
- 剑指Offer10:二进制中1的个数
- 剑指Offer--13.调整数组顺序使奇数位于偶数前面
- 【剑指offer】统计二进制整数中1的个数
- 剑指offer面试题10:二进制中1的个数(与位运算有关)
- 剑指Offer——二进制中1的个数
- 剑指 offer set 13 把数组排成最小的数
- [牛客网,剑指offer,python] 二进制中1的个数
- 剑指Offer----二进制中1的个数
- [剑指offer]二进制中1的个数
- 【练习笔记】剑指offer-面试题10 :二进制中1的个数
- 剑指offer-chapter2-面试题10-二进制中1的个数(java)
- 剑指offer13:O(1)时间删除链表节点
- 剑指offer--(13)不要加减乘除做加法--Java描述
- 【newCoder】剑指Offer_编程题 二进制中1的个数
- 剑指offer之二进制中1的个数
- 剑指offer13 在O(1)时间删除链表的结点
- 剑指offer--面试题13:在O(1)时间删除链表节点
- 剑指offer面试题之求一个整数二进制中1的个数
- 剑指offer 13 调整数组顺序使奇数位于偶数前面