剑指offer面试题10 二进制中1的个数 java实现
来源:互联网 发布:把ubuntu安装到u盘 编辑:程序博客网 时间:2024/06/03 19:57
解题思路:
常规的思路可能是将一个数n和1做按位与(&)运算,若结果为1,则证明n的二进制表示中末位为1,计此时符合题目条件,计数器加1,然后将n用n/2赋值,继续上述过程。但该方法有个问题,针对负数,由于负数在计算机中是以补码的形式存储,所以对于负数不能用这种方法。可以换个思路。保持n不变,设置一个flag,flag从1开始,令n与flag做按位与运算,若为1则计数器加1。然后另flag左移一位,继续上述过程。
public class Solution {public int NumberOf1(int n) {int count = 0;int flag = 1;while (flag != 0) {if ((n & flag) != 0) {// 证明此时n的与flag相与得1的那一位为1count++;}// 将flag左移一位,相当于乘以2flag = flag << 1;}return count;}}
阅读全文
0 0
- 剑指offer--面试题10:二进制中1的个数--Java实现
- 剑指offer编程题Java实现——面试题10二进制中1的个数
- 剑指offer面试题10 二进制中1的个数 java实现
- [剑指offer][面试题10]二进制中1的个数
- 《剑指offer》面试题10二进制中1的个数
- 【剑指offer】面试题10:二进制中1的个数
- 【剑指offer】面试题10:二进制中1的个数
- 剑指offer 面试题10 二进制中1的个数
- 剑指Offer:面试题10 二进制中1的个数
- 《剑指Offer》面试题10:二进制中1的个数
- 剑指offer-面试题10-二进制中1的个数
- 【剑指offer】 面试题10: 二进制中1的个数
- 剑指offer-面试题10:二进制中1的个数
- 剑指Offer----面试题10:二进制中1的个数
- 【剑指offer】面试题10: 二进制中1的个数
- 剑指offer面试题10:二进制中1的个数
- 剑指offer--面试题10:二进制中1的个数
- 剑指offer-面试题10-二进制中1的个数
- Java -- 继承
- 监听器
- KNN
- NDK Build 用法(NDK Build)
- 爬虫——Scrapy框架
- 剑指offer面试题10 二进制中1的个数 java实现
- UVa 815
- spring test
- CPU内部实现“加,减,乘,除”过程
- DES三层加密工具类
- 2017百度之星初赛
- opencv学习笔记之对灰度图像遍历的三种方法
- 队列学习
- 51Nod-1005-大数加法