华为机试-HJ62

查找输入整数二进制中1的个数

http://www.nowcoder.com/questionTerminal/1b46eb4cf3fa49b9965ac3c2c1caf5ad

方案一:

while True :
    try:
        m=int(input())
        num=[]#放二进制数
        while m!=1:
            a=m%2
            if a:
                num.append(a)
                m=(m-a)/2
            else:
                m=(m-a)/2
                #不能写continue,continue 用于跳过该次循环,不会更新m
        print(len(num)+1)    
    except:
        break

运行时间:18ms
占用内存:3360k
瞎琢磨了一下,新开了一个列表放1,列表里面如果放了很多1会不会有点占内存??
以及,把里面的重复的代码写成函数会不会好点点?

方案二:

def cal_data(num):
    i=0
    while num>0:
        if num%2==1:
            i+=1
            num=num//2#向下去取整,不是用/
        else:
            num=num//2
    return i 

while True :
    try:
        m=int(input())
        count=cal_data(m)
        print(count)
    except:
        break       

运行时间:23ms
占用内存:3448k

内存确实小了一丢丢,但是时间长了?又是充满问号的一天

全部评论

相关推荐

Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务