这一周主要是hash表、二叉树、二叉搜索树的练习。难度选择了在中等难度以上的题目进行练习。每道题目都会先自己思考,多多少少都会有一些想法和思路,但是在具体代码实现细节上面还有些欠缺,大部分题目还需要看过别人的讨论才有具体的实现思路。经过自己实现之后,对于同类型的问题做起来会更加有思路些,还是需要更多地练习。
Hash表的特点是使用hash函数构建键值对应关系,插入和查找的时间复杂度是O(1),可以应用到字符串搜索、匹配、数据缓存等场景下。LeetCode第3题构建使用hash表,一次循环即可找到最长子字符串,也是一种空间换时间的解决问题思路。
更多的对于二叉树和二叉搜索树进行了练习。主要的解题思路是递归,从做题中发现技巧是对于前序、中序、后序遍历以及BFS、DFS的合理运用,可以解决很多问题,至少可以提供一种解题思路。通过做题也对树的上面的遍历方式的具体实现代码有了更熟练的运用。对于二叉搜索树的解题思路,更多运用到二叉搜索树特性:1.左<根<右;2.每一节点都是二叉搜索树;3.中序遍历是递增数列。应用这三点特性,遇到二叉搜索树的问题,还是能提供不少的解题想法的。
还需要更多地做题练习来打开自己的解题思维。