Skip to content

Latest commit

 

History

History
72 lines (43 loc) · 3.58 KB

note.md

File metadata and controls

72 lines (43 loc) · 3.58 KB
  1. 201709-2 需要先对钥匙编号排一次序,在对返还时间排一次序号

  2. 201712-2 对于余数和整除概念混淆,也就是//运算符和%运算符用反了

  3. 201803-2 真就无脑模拟,如果用enumerate的话好像如果中途对象发生了改变的话不会更新?,最好是直接用索引吧

  4. 201912-2 真的是服了,这么简单的题目,不知道考试的时候在想些什么,简单的set就可以瞬间解决,吐了

  5. 201312-3 最大矩形,一开始只有40分,修改了一下每次最小值的判断,循环内部节省了O(N)然后就过了,这种东西其实考试的时候可能比较难想到吧,如果不知道超时的话就不会去改的,如果有时间的话还是可以查找一下代码中可以进行优化的部分

  6. 201403-3 命令行选项,一开始0分,后来20分,过了好久到了90分,问题在于没有看到题目中要求的排序要求(好好看题目),然后最后差的10分是因为有一种情况没有考虑到,最后一个选项是带参数的,但是此时如果再向后看有没有参数的话就可能会超出index,所以要先检测一下,这个题目好几个地方需要判断异常情况

  7. 201409-3 字符串匹配,换行符没有注意到,以后默认用strip

  8. 201509-3 学到的一个点在于,如果使用格式化字符串,如

    format_string = f"some string and {variable}"

    的话,如果还想在字符串中使用"{}"花括号本身的话就需要连续打两个才行

    variable = "test"
    format_string = f"{{ {variable} }}" ## 打印出来的是"{test}"

    所以在这道题目中需要使用四个"{{{{}}}}"才行

    还有就是str的replace方法是返回一个新的字符串而不是在原来的值上面直接修改

  9. 201512-3 怎么样都到不了100分,但是还是学到了一些东西,如果使用队列的话,请使用from collections import deque,虽然有from queue import Queue,但是Queue的本意是线程之间通信,所以实际山还是deque性能更高,list就完全不考虑了

  10. 正则替换re.sub

  11. 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开始

  12. 201709-3 关于json以及type,json对象使用get方法如果键不存在不会发生错误,但是dict会抛出错误

  13. 201803-3 一开始只有90分,题目中只说了匹配项是合法的,并没有说url本身一定是合法的,所以需要额外加一些异常判断

  14. 201912-3 一开始只有80分,最后找出来是dict比较的时候,只进行的单向比较,双向比较后90分,超时

  15. 201909-4 推荐系统,只有20分,总是超时,但是还是学到了一些吧。使用heapq.nlargest来得到最大的n个元素,可以指定key

  16. 善用map,filter,zip函数

  17. 201409-4 使用dfs寻找最短路径,支持多点,同时需要注意多点寻找时的效率问题

  18. 使用heapq的时候,可以通过覆盖排序对象的__lt__方法来指定插入时比较的方法

  19. tarjan算法线性之间求解强连通分量201509-4

  20. Hierholzer 算法求欧拉回路,无法理解为什么不用回溯,201512-4