在算法的学习过程中,需要进行大量的训练(主要是刷题),如我这篇 「刷题交流 | 2700 分总结 & 算法入门」文章中提到的,在学习基础算法的过程中,需要去刷对应知识点的模板题和扩展题;而在完成大量知识点的掌握之后,要做到融会贯通,就需要随机去刷一定量的题来进行训练;在训练思维能力的时候,需要去刷一些偏思维的题目,CF 上的构造题,力扣上的一些贪心题等等。
而当我们需要进行训练的时候,如何选择题目是非常关键的,如果选的题目偏容易,那么很可能就都是一眼题,没什么训练的价值,而如果太难,则可能根本没法解出来,即使通过查看题解等方式最终能够解出来,可能自己也无法理解这种思路或者其中的精髓。根据灵神@endlesscheng的分享,以及我自己的体验,比较适合用来训练的题目是那些比自己当前水平稍微难一些的题目,这样的题目大概率能让自己从中去学到某些知识或者思路,从而有所提升。
如果是去 CF 上刷构造题的话,可以直接根据自己当前的分数,去筛选出对应分数范围内的题目。而在力扣上只有简单、中等、困难这三个难度可选,我们没法去筛选出一个比较合适的难度区间。目前官方没有实现这个功能,但零神@zerotrac2开发了一个计算题目评分的项目 - 「Leetcode Problem Rating Project」,其中包含了一些题目的评分数据,能比较准确的体现了一个题目的难度,于是我们可以根据这个数据,去筛选出适合自己难度的题目,去进行训练。
零神的项目中自带了一个前端,可以非常方便的对题目按照评分进行排序和筛选,如果只是查阅题目的难度的话,完全够用了。但有时候我们想结合一些其他维度的参数进行筛选,比如只显示某个标签的题目,对这个标签内的题目进行评分范围的选择;或者是只筛选出自己未解答过的题目等等。这些功能已经超出「Leetcode Problem Rating Project」这个项目的目标,零神也在这个 「Issue#15」中表示了不会在这个项目中去添加这些功能。但这样的功能我觉得又是一种比较实际的需求,可以更方便的安排刷题的训练,然后我便计划在扩展中集成这些功能。零神已经完成了评分计算这最困难的一步,其他一些简单的就由我们来完成吧!于是经过数天的奋战,终于赶在回家前把这个功能开发出来,欢迎大家体验和反馈。
本项目仓库中的功能说明配备了视频演示,欢迎查看 https://github.com/XYShaoKang/refined-leetcode#%E5%8A%9F%E8%83%BD
这次更新主要是引入零神的「题目评分数据」,用于对题目进行筛选,然后将筛选出来而题目加入到题单中。
安装扩展后,在题库页和题单页会出现新的一块新的 UI

这个 UI 中包括对题目进行评分范围的筛选、按照评分进行排序、将题目添加到指定的题单中等功能。
目前适配题单、难度、状态、标签等除了搜索以外的选项,因为我还没研究明白力扣的搜索规则 🤣,所以暂时就没有做适配,可以在需要搜索的时候,关闭这个功能再去搜索。
注意题单能添加的最大题目数量为 200
前两天到有大佬在群里吐槽比赛答题页的快捷键不知道在哪儿关,不小心误触了提交,就得领 5 分钟罚时。我研究了下,确实没找到哪里能够去禁用快捷键的,于是我提供了一个禁用快捷键的选项,开启之后则会禁用诸如保存、提交、测试等快捷键,避免因误触导致意外的发生。

再次感谢零神的题目评分项目 https://github.com/zerotrac/leetcode_problem_rating ,让这个功能的实现成为可能。
另外还有一款题目评分的插件,来自扣友@runonline,具体可以查看这个帖子 力扣题对应周赛难度分显示 的介绍,这款插件的支持更多区域(比如答题页)的评分显示。而我的扩展目前只支持题库页和题单页,特点是能直接通过评分去过滤和排序,当然这也是我做这个功能的主要目的,为了能够去过滤出目标题目,将其加入到题单中。大家可以各取所需。
不过目前如果同时开启的话,两者存在一些兼容性问题,结果是会导致出现频率这一列出现一些奇怪的现象,但不影响使用。如果实在不想看到这个渲染的话,可以选择临时关闭其中的一个功能,我的扩展中提供了关闭的选项,可以在不用刷新页面的情况下,关闭和打开评分功能;或者是临时关闭另外一个插件。