Skip to content

【030-week1】算法训练营第一周学习总结 #50

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
tripleSim opened this issue Jun 9, 2019 · 0 comments
Open

【030-week1】算法训练营第一周学习总结 #50

tripleSim opened this issue Jun 9, 2019 · 0 comments

Comments

@tripleSim
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant