-
201709-2 需要先对钥匙编号排一次序,在对返还时间排一次序号
-
201712-2 对于余数和整除概念混淆,也就是
//
运算符和%
运算符用反了 -
201803-2 真就无脑模拟,如果用
enumerate
的话好像如果中途对象发生了改变的话不会更新?,最好是直接用索引吧 -
201912-2 真的是服了,这么简单的题目,不知道考试的时候在想些什么,简单的set就可以瞬间解决,吐了
-
201312-3 最大矩形,一开始只有40分,修改了一下每次最小值的判断,循环内部节省了O(N)然后就过了,这种东西其实考试的时候可能比较难想到吧,如果不知道超时的话就不会去改的,如果有时间的话还是可以查找一下代码中可以进行优化的部分
-
201403-3 命令行选项,一开始0分,后来20分,过了好久到了90分,问题在于没有看到题目中要求的排序要求(好好看题目),然后最后差的10分是因为有一种情况没有考虑到,最后一个选项是带参数的,但是此时如果再向后看有没有参数的话就可能会超出index,所以要先检测一下,这个题目好几个地方需要判断异常情况
-
201409-3 字符串匹配,换行符没有注意到,以后默认用
strip
吧 -
201509-3 学到的一个点在于,如果使用格式化字符串,如
format_string = f"some string and {variable}"
的话,如果还想在字符串中使用"{}"花括号本身的话就需要连续打两个才行
variable = "test" format_string = f"{{ {variable} }}" ## 打印出来的是"{test}"
所以在这道题目中需要使用四个"{{{{}}}}"才行
还有就是str的replace方法是返回一个新的字符串而不是在原来的值上面直接修改
-
201512-3 怎么样都到不了100分,但是还是学到了一些东西,如果使用队列的话,请使用
from collections import deque
,虽然有from queue import Queue
,但是Queue
的本意是线程之间通信,所以实际山还是deque
性能更高,list
就完全不考虑了 -
正则替换
re.sub
-
201703-3 实际上还是有很多问题的
-
出现没有事先告诉有多少输入的情况
while True: line = stdin.readline() if not line: break pass
-
用匹配的字符串进行相关替换,如将
[Text](Link)
替换成<a href="Link">Text</a>
line = re.sub(r"\[(.+?)\]\((.+?)\)", r'<a href="\2">\1</a>', line)
其中
\1
和\2
分别表示第几个group序号从1开始
-
-
201709-3 关于json以及type,json对象使用get方法如果键不存在不会发生错误,但是dict会抛出错误
-
201803-3 一开始只有90分,题目中只说了匹配项是合法的,并没有说url本身一定是合法的,所以需要额外加一些异常判断
-
201912-3 一开始只有80分,最后找出来是dict比较的时候,只进行的单向比较,双向比较后90分,超时
-
201909-4 推荐系统,只有20分,总是超时,但是还是学到了一些吧。使用
heapq.nlargest
来得到最大的n
个元素,可以指定key
-
善用
map
,filter
,zip
函数 -
201409-4 使用dfs寻找最短路径,支持多点,同时需要注意多点寻找时的效率问题
-
使用
heapq
的时候,可以通过覆盖排序对象的__lt__
方法来指定插入时比较的方法 -
tarjan
算法线性之间求解强连通分量201509-4
-
Hierholzer
算法求欧拉回路,无法理解为什么不用回溯,201512-4