《剑指offer》刷题笔记(位运算):二进制中1的个数
来源:互联网 发布:组合楼板计算软件 编辑:程序博客网 时间:2024/06/04 21:54
《剑指offer》刷题笔记(位运算):二进制中1的个数
- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
- 剑指offer刷题笔记位运算二进制中1的个数
- 题目描述
- 解题思路
- C版代码实现
- 方法一
- 方法二
- Python版代码实现
- 方法三
题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路:
方法一:用1(循环左移)与n的每一位进行位与,来判断1的个数;注意,如果用n进行循环右移,一定要注意负数的情况,因为如果是负数,n右移之后高位补位为1,如果一开始不对n加以判断和处理,就会进入死循环。
方法二:目前我认为最优的解。n=(n-1) & n;
举个栗子:一个二进制数n为1100,那么n-1为1011,1011&1100=1000,我们会发现,这样操作之后,相当于把n最右边的一个1变为0,那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。
方法三:python的解法给了我另一种思路,为什么不用位数作为循环终止条件呢?
C++版代码实现:
方法一:
class Solution {public: int NumberOf1(int n) { int count = 0; int flag = 1; while (flag != 0) { if ((n & flag) != 0) { count++; } flag = flag << 1; } return count; }};
方法二:
class Solution {public: int NumberOf1(int n) { int count = 0; while (n != 0) { ++count; n = (n - 1) & n; } return count; }};
Python版代码实现:
方法三:
# -*- coding:utf-8 -*-class Solution: def NumberOf1(self, n): # write code here return sum([(n>>i & 1) for i in range(0,32)])
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz
阅读全文
0 0
- 《剑指offer》刷题笔记(位运算):二进制中1的个数
- 剑指offer: 二进制中1的个数(位运算)
- 【剑指Offer】二进制中1的个数(位运算)
- 剑指offer 10题 【位运算】二进制中1的个数
- 剑指Offer(第二版)面试题15:二进制中1的个数(位运算)
- 剑指offer-面试10:二进制中1的个数(位运算)
- 剑指offer面试题10:二进制中1的个数(与位运算有关)
- 剑指offer面试题10 二进制中1的个数(位运算专题)
- 【剑指offer】位运算相关-二进制中1的个数10
- 剑指offer 2.4 位运算,求二进制中1的个数
- 【剑指offer】2.4.3位运算——面试题10:二进制中1的个数
- 《剑指offer》:[14]位运算以及求二进制中1的个数
- 剑指offer——面试题10:位运算之二进制中1的个数
- 《剑指Offer》位运算——求二进制数中1的个数
- 剑指offer:(10)位运算,计算二进制中1的个数
- Offer题10 字母表示26进制&二进制中1的个数&位运算相关题目
- 剑指Offer面试题10二进制中1的个数(位运算)附带一个进制转换题
- 位运算:二进制中1的个数
- Android要点记录
- IntelliJ IDEA 2017激活--for Mac
- 基于Swift的iOS应用程序开发:使用UIImagePickerController从相册选择图片
- Android开发之动画效果浅析
- 写在学习Java GUI之前
- 《剑指offer》刷题笔记(位运算):二进制中1的个数
- 【我的Android进阶之旅】Android 源代码中的Java代码中//$NON-NLS-1$ 注释是什么意思?
- Socket之客户端Socket
- 使用git管理unity工程
- Java Swing事件处理机制
- Shader补充记录
- 使用 Spring 2.5 注释驱动的 IoC 功能
- iOS之hHTTPS的使用
- A Spy in the Metro UVA