第二周调整了刷题的策略,先从难题开始做,然后再做中等,最后做简单的题。这样个调整对我个人感觉非常有效,第一周先做简单题并且纠结于多种实现方式,到最后时间不够又剩下了难题,心态上就十分焦躁,总感觉没有完成核心的任务。本周同样遇到时间不够的情况,但最后剩下都是简单的题,极大的减轻了心理负担。 不过这样依然还是有一定的心理负担。虽然先做的难题,但是我个人感受难题未必真的难,有可能只是步骤复杂代码量较大,感觉LeetCode(国内)上讨论的解法都大同小异。反倒是有些中等甚至简单的题,很多神奇的解法更加让人震惊,比如这次的220题,深深的震撼了我。没能把超哥布置的所有题都刷掉,还是心有不甘,只希望自己训练营结束以后依然能够继续坚持刷题。 这周有一个好的趋势,我在公司宣传刷题的时候成功吸引了两个同事一起入坑,大家刷的十分投入。缺点是有点儿耽误工作,我右边的哥们一个题卡了快一下午……我还得想办法控制控制局面。 下面分享一些新学到的技巧,对我比较有价值。 1. 超哥强调的『先读题』很重要,我在297这题上犯了错误,看见二叉树和数组就想当然的以为是实现2*n,2*n+1的玩法。结果完全错误…… 2. python中在对数字进行逻辑判断的时候,如果相对None进行判断,最好还是老老实实的写 if n is None,否则会在0的处理上踩坑。 3. python中没有『异或』,但是可以使用 bool(n1) != bool(n2) 来曲线救国。 4. Iterator 是个好东西,在某些递归父问题与子问题共同迭代同一个数据结构,并且父在子的迭代下标基础上继续迭代到时候,很好用。例如这次的726。 5. python是有整除的, n1 // n2 。 6. 220这个题的O(n)解法真的太酷了…… 7. python的标准库似乎没有 链表、平衡查找树等数据结构,都是基于数组的……如果想直接用,还是Java方便一些。
Activity