本周总共做了4道算法
- top-k-frequent-words
最简单的使用两个map,暴力解决
Java使用优先级队列来解决top k问题
- find-duplicate-file-in-system
解法很简单,循环求解。后面的后续行动题目更有意义。
-
second-minimum-node-in-a-binary-tree
类似数组寻找第二小的数,维护两个数分别是最小和第二小的数。将遍历数组的方式改为遍历二叉树
-
minimum-distance-between-bst-nodes
最开始考虑使用递归方案,但是题目描述没有限定两个节点一定相邻,直接用递归不好实现。
由于是搜索二叉树,可以直接按照中序遍历,最终生成一个有序的链表,判断链表相邻节点的差值,计算出最小值。
- 二叉树的基本操作和性质还是很重要的,解题时可以利用不用种类的二叉树。先序,中序,后序的递归和非递归操作需要熟练掌握
- 哈希表在查找,统计数量,去重都是挺有用的
- 做没有见过的算法题,考虑好使用的数据结构和算法。
- 算法在实际中的应用,比如 609。看源码的时候注意使用的数据结构
- 递归算法和二叉树还是有些问题,递归还是需要多练