博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LintCode 简单】365. 二进制中有多少个1
阅读量:4088 次
发布时间:2019-05-25

本文共 781 字,大约阅读时间需要 2 分钟。

1.问题描述:

计算在一个 32 位的整数的二进制表示中有多少个 1

 

2.样例:

给定 32 (100000),返回 1

给定 5 (101),返回 2

给定 1023 (1111111111),返回 10

 

3.代码:

首先两个错误的例子。第一个bin()得到的二进制数组,其中的1不能和int 1 相等于。

 

def countOnes(self, num):    # write your code here    l = list(bin(num))    length = len(l)    count = 0    for i in range(length):        if l[i] == 1:            count += 1    return count

 

 

第二个不能完全通过测试用例。
def countOnes(self, num):        # write your code here        count=0        while num!=0:             num = num & (num-1)            count+=1        return count

 

正确代码

def countOnes(self, num):        # write your code here        count=0        for i in range(0,32):            if num&1:                count+=1            num=num>>1        return count
本题很明显是利用二进制位操作与运算&,和1进行与运算,可以判断末尾是不是1。然后通过不断左移一位操作,对为1的位置进行计数。
 

 

转载地址:http://couii.baihongyu.com/

你可能感兴趣的文章
HBase读写的几种方式(二)spark篇
查看>>
HBase RowKey与索引设计
查看>>
flume1.8 Sinks类型介绍(三)
查看>>
flume1.8 Sources类型介绍(二)
查看>>
flume1.8 Channel类型介绍(四)
查看>>
Kafka入门介绍
查看>>
Kafka常用命令
查看>>
flume1.8 开发指南学习感悟
查看>>
POI读写大数据量excel,解决超过几万行而导致内存溢出的问题
查看>>
Spark入门学习
查看>>
kafka全部数据清空与某一topic数据清空
查看>>
HBase基本概念与基本使用
查看>>
Hive基础概念、安装部署与基本使用
查看>>
Storm安装部署
查看>>
Hadoop — MapReduce原理解析
查看>>
logstash日志采集工具的安装部署
查看>>
elasticSearch安装部署
查看>>
elasticSearch基本使用
查看>>
Redis基本概念、基本使用与单机集群部署
查看>>
Spark源码剖析 - SparkContext的初始化(七)_TaskScheduler的启动
查看>>