这周题目涉及数组,链表,栈和队列,map,二叉树,二叉搜索树,递归和二分搜索,外加一道动态规划的 题目。 以前在做题的时候不大注重代码优化和反馈,往往题目通过了就结束了。通过上课,现在觉得反馈这部分还是比较重要的。在完成题目后看了其它优秀的代码,会发现原来还有很多特别的解法,有些非常简洁,但可读性会差一些,有些则是利用另一种思路降低了时间复杂度。 比如在3Sum这道题中,第一反应是枚举加二分,但是发现讨论区里有人利用了类似快速排序里面的思想进行搜索,降低了时间复杂度。 GroupAnagrams这道题,一般是直接对单词进行排序,然后作为键值插入Map中,这涉及很多字符串比较的操作,比较费时。于是就有人选择用素数相乘生成键值。也有用计数排序来替代快速排序生成键值的方法。 largestRectangleArea利用栈的特性,始终在栈中维持一个单调递增的排列,来统计矩阵的面积的方法非常巧妙。 还有一些题目在做的过程中用到一些变量来存储,后来发现其实还有更简洁的写法不需要额外变量。lowestCommonAncestor这题我是会用两个数组记录各自的路径再比较,有另一种思路只需要三个整形就可以统计节点的访问情况。 总的来说,解题时还是需要多思考一些方法和学习其它解法来拓宽思路。 算法导图:[链接](https://github.com/tripleSim/algorithm/blob/master/Week_01/id_30/Mind%20Graph.png)
Activity