在知乎看到一个有意思的东西,就是ARTS挑战,具体含义如下
每周完成一个ARTS: 每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称ARTS)
感觉自己原来看的东西确实很多都忘了,时间就匆匆过去了,几年大学时光学的东西也忘的差不多了,本来我的职业规划里面就是不断巩固、拓展自己的知识,形成知识闭环,但是总是没有很好的实施。现在2021年2月28日起,我也向自己开启这个挑战。由于不怎么在知乎里面混,也不喜欢水群,就在这里记录了。
第一周
Algorithm:
-
215. 数组中的第K个最大元素 假设数组从小到大排序,则我们需要找到下表为n-k的元素。采用快排思想,在partition的时候,得到index,如果index=n-k则返回,小于n-k则在右区间递归找,否则左区间递归找
-
462. 最少移动次数使数组元素相等 II需要寻找中位数而不是平均数,寻找中位数最快的方法是什么?quick-select,即快排的思想。找到中位数后,求得每个元素到中位数的绝对值差之和。为什么是中位数,假设三个数,A<B<C,想要让ABC相等,调整成任意数D, A < D < C,则需要调整的次数为 D-A+C-D+|B-D|=C-A,因此最小的调整次数就是C-A,此时B=D,即调成中位数最好。
Review:
Tip:
Share: