伯克利CS61A错题笔记1.0
前段时间刷着berkeley的CS61A,在第二次作业中遇到一个题,魔怔了好久,解出来才发现根本不难,笔记纪念一下。
倒序比数,数大即停
原题 —— Count Until Larger
Implement the function count_until_larger. count_until_larger takes in a positive integer num. count_until_larger counts the distance between the rightmost digit of num and the nearest greater digit; to do so, the function counts digits from right to left. Once it encounters a digit larger than the rightmost digit, it returns that count. If no such digit exists, then the function returns -1.
For example, 8117 has a rightmost digit of 7 and returns a count of 3.
9118117 also returns a count of 3: for both, the count stops at 8.
0 should be treated as having no digits and returns a count of -1.
def count_until_larger(num):"""Complete the function count_until_larger that takes in a positive integer num.count_until_larger examines the rightmost digit and counts digits from right toleft until it encounters a digit larger than the rightmost digit, then returns that count.>>> count_until_larger(117) # .Case 1-1>>> count_until_larger(8117) # .Case 23>>> count_until_larger(9118117) # .Case 33>>> count_until_larger(8777) # .Case 43>>> count_until_larger(22) # .Case 5-1>>> count_until_larger(0) # .Case 6-1""""*** YOUR CODE HERE ***"
题目大意就是设计一个函数 count_until_larger:输入任意自然数,找到【比最后一位数大、且与最后一位距离最近的】数,返回它与最后一位数的距离。如果输入是0或者找不到此数,则返回-1。
大致的思路:
- 倒序取数,循环比较最后一位和往前数字的大小,
- 往前数字大于最后一位时:停止,return 循环的次数
- 所有数字循环完成,未找到更大数字:return -1
第一版答案,用string非常暴力拆解了数字:
def count_until_larger(num):rightmost,listn,count = num%10,[],0listn.extend(i for i in str(num//10))listn.reverse()for number,i in enumerate(listn):if int(i)> rightmost:return number+1else:count += 1if count != 0:return -1else:return count
第二版优化后的答案,用取余数的方法一步步拆解数字:
def count_until_larger(num):rightmost, aheadnum, count = num%10,((num - num%10)%10), 0while num > 1:if aheadnum > rightmost:return countelse:count += 1num = num // 10aheadnum = num %10return -1
第二版其实和标答已经非常相似了,但也还是有值得优化的:
- 前一位数可以直接用 num %10 (除10、取余数)表示
- 当 num 为个位数时,num //10 = 0 (取整除结果),所以不需要 num > 1
附上标答:
def count_until_larger(num):rightmost = num % 10count = 0while num:if num % 10 > rightmost:return countnum = num // 10count = count + 1return -1
折腾了一中午,鬼知道一开始看这题的时候陷入了什么bug中,解决了也是很爽~
伯克利CS61A错题笔记1.0相关推荐
- 笔记-软考高项-错题笔记汇总2
错题笔记汇总2 1. 类的关系 依赖关系:描述了一个类的变化对依赖于它的类产生影响的情况 关联关系:描述了类的结构之间的关系 聚合关系:特殊关联关系,指明一个聚集(整体)和组成部分之间的关系 组合关系 ...
- 笔记-软考高项+中项-错题笔记汇总5
错题笔记汇总5,中项+高项 1. 物流柔性化 物流柔性化战略是指为了实现物流作业适应消费需求的"多品种.小批量.多批次.短周期"趋势,灵活地组织和实施物流作业. 柔性化本来是为实现 ...
- 笔记-软考高项-错题笔记汇总1
错题笔记汇总1 1. 信息系统的规划工具 在制订计划时,可以利用PERT图和甘特图: 访谈时,可以应用各种调查表和调查提纲: 在确定各部门.各层管理人员的需求,梳理流程时,可以采用会谈和正式会议的方法 ...
- 笔记-中项/高项学习期间的错题笔记1
这是记录,在中项.高项过程中的错题笔记: https://www.zenwu.site/post/2b6d.html 1. 信息系统的规划工具 在制订计划时,可以利用PERT图和甘特图: 访谈时,可以 ...
- 一战上岸北京211 初试+复试 408错题笔记
趁着现在还记着点复试的内容我先把复试的内容捋一遍 先是政治问题:(都是大概意思) 假如导师给你分配的事情比较多,你心情会发生什么样的变化 怎么看待近两年中国的抗疫历程 我国把人民生命健康放在第一位说明 ...
- 考研数学如何整理错题笔记?140分学长总结的模板,拿走直接用(含错题笔记)
考研数学如何整理错题笔记?140分学长总结的模板,拿走直接用(含错题笔记) 数学错题笔记 2021<考研数学接力题典1800>勘误表(附学霸高分笔记) 2020考研初试成绩已经公布了,对于 ...
- 【牛客网java练习错题笔记】 --Java基础打卡day002
[牛客网java练习错题笔记] --Java基础打卡day002 1 根据以下代码段,正确的是 2 在Java中,在同一包内,类Cat里面有个公共方法sleep(),该方法有static修饰,所以可以 ...
- Python计算机二级选择题错题笔记
推荐用小黑的软件刷真题,是免费的.后面大题不要死记答案,可以去PTA刷题,练会了回来做二级题是很轻松的. 考试难度不大,我是不到25分钟就交卷了,因为选择题抽到了好几个新题不会做,差几分到优秀,大家加 ...
- 2021年广东工业大学第11届腾讯杯新生程序设计竞赛(同步赛)错题笔记
目录: 题目链接 A 比比谁更大 B 过生日 D 机器人 G 拼牛牛 I 史莱姆 J 水题 K 烧烤丝瓜 L 歪脖子树下的灯 题目链接 A 比比谁更大 题目描述 在一个夜黑风高的晚上,牛哥哥吃完心爱的 ...
最新文章
- java优先级目数_10.Java运算符+(优先级、目数)+
- Gonet2 游戏server框架解析之gRPC提高(5)
- 2010最值得关注的10款小众互联网产品
- 魔术方法php,PHP中常用的魔术方法
- ARP协议,以及ARP欺骗
- [css] 你有没有使用过“形似猫头鹰”(例:`* + *{ ... }`) 的选择器?
- Redis官网——如何利用Redis做服务器集群的分布式锁
- nodeJs 控制台打印中文显示为Unicode解决方案
- python制作物联网控制软件下载_Python+树莓派制作IoT(物联网)门控设备
- 数据科学和人工智能技术笔记 十三、树和森林
- 物联网卡在智慧农业的作用有哪些
- 远程连接ubuntu中mysql的数据库
- Linux -- 特殊权限 (转)
- Linux串口调试工具
- adb interface 驱动问题(保证解决)
- webpack打包报错系列(二)Failed to load C:\Users\XXX\webpack.config.js:17 mode: ‘development‘
- 表情识别------CNN训练fer2013数据集
- 影响未来的十大网络技术
- java程序设计实验报告代写_代写file I/O作业、代写java Scanner I/O程序、代写java编程作业、代做java实验报告...
- 2020-7-3中兴IC开发设计师 专业面,
热门文章
- 怎么下载全国省市县行政区划边界
- [Erlang]Erlang与C的节点通信
- 13.4-软件测试标准 13.5-测试过程标准 13.6-测试文档标准 13.7-测试技术标准
- ESP8266_02程序的编译与下载
- SpaceX准备对Starhopper版星际飞船进行发射测试
- SSM 实现文件上传
- matlab二叉树计算期权价格,[转载]期权二叉树定价——SAS/IML初步 (一)
- VB程序学习代码记录20160731
- c语言:关于vs2012使用easyX的loadimage()加载资源图片
- HP V3500简要拆机流程