题解 | #汽水瓶#

汽水瓶

http://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f

umpty_bottle = []
while True:
    a = int(input()) #输入空瓶子数目
    if(a >= 1):
        umpty_bottle.append(a)
    else:#输入0则输入结束,0不算在输入内
        break
for bottle in umpty_bottle:#每次提取一次输入
    if(bottle == 1):#若是一个空瓶,则认为是不能换
        print(0)
    elif(bottle == 2):#若有两个,可以找老板要一个凑三个空瓶喝到一瓶可乐
        print(1)
    else:#三个及以上
        sum_cola = 0 #初始化能喝到的可乐数量
        while True:
            a = int(bottle / 3)#能直接换到的可乐数量
            sum_cola += a #喝掉,剩下空瓶
            b = bottle % 3#之前换剩下的空瓶
            bottle = a + b #新的空瓶和之前的空瓶的和
            if(int((bottle + 1) / 3) == 0):#剩下的 < 2,则结束换
                break
            if((bottle + 1) / 3 == 1.0):#剩下两个,则借一个继续换,!!!!ps:我这里写复杂了,直接写==2即可
                bottle = bottle + 1
        print(sum_cola)#输出换的可乐总数
华为机试题解(prod.by kedao) 文章被收录于专栏

华为实习机试题解

全部评论
厉害
点赞 回复 分享
发布于 2023-08-04 15:46 陕西
19行的定义是bottle=空瓶子总数 , 所以22行判断剩余空瓶子为2时,可以在23行直接定义sum_cola=ssum_cola+1,然后直接break, 这样会少一次循环。
点赞 回复 分享
发布于 2023-02-03 12:23 陕西
一个字,绝!
点赞 回复 分享
发布于 2022-03-04 23:30

相关推荐

小厂面经,也是我的处女面(30min)1.自我介绍2.spring&nbsp;boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring&nbsp;task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
会飞的猿:我看你想进大厂,我给你总结一下学习路线吧,java语言方面常规八股要熟,那些java的集合,重点背hashmap八股吧,jvm类加载机制,运行时分区,垃圾回收算法,垃圾回收器CMS、G1这些,各种乐观锁悲观锁,线程安全,threadlocal这些。在进阶一些的比如jvm参数,内存溢出泄漏排查,jvm调优。我这里说的只是冰山一角,详细八股可以去网上找,这不用去买,都免费资源。mysql、redis可以去看小林coding,我看你简历上写了,你一定要熟,什么底层b+树、索引结构、innodb、mvcc、undo log、redo log、行级锁表级锁,这些东西高频出现,如果面试官问我这些我都能笑出来。消息队列rabbitmq也好kafka也好,学一种就行,什么分区啊副本啊确认机制啊怎么保证不重复消费、怎么保证消息不丢失这些基本的一定要会,进阶一点的比如LEO、高水位线、kafka和rocketmq底层零拷贝的区别等等。计算机网络和操作系统既然你是科班应该理解起来问题不大,去看小林coding这两块吧,深度够了。spring boot的八股好好看看吧,一般字节腾讯不这么问,其他的java大厂挺爱问的,什么循环依赖啥的去网上看看。数据结构的话科班应该问题不大,多去力扣集中突击刷题吧。项目的话其实说白了还是结合八股来,想一想你写的这些技术会给你挖什么坑。除此之外,还有场景题、rpc、设计模式、linux命令、ddd等。不会的就别往简历上写了,虽然技术栈很多的话好看些,但背起来确实累。总结一下,多去实习吧,多跳槽,直到跳到一个不错的中厂做跳板,这是一条可行的进大厂的路线。另外,只想找个小厂的工作的话,没必要全都照这些准备,太累了,重点放在框架的使用和一些基础八股吧。大致路线就这样,没啥太多难度,就是量大,你能达到什么高度取决于你对自己多狠,祝好。
点赞 评论 收藏
分享
评论
5
2
分享

创作者周榜

更多
牛客网
牛客企业服务