华为机试-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

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

全部评论

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点??? 还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力………… 感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务