- 博客(9)
- 收藏
- 关注
原创 最近公共祖先
首先假如我们是求树上两个最远点的距离那么很简单,直接递归找最大深度就可以了,但是本题要求我们找任意两点的最短路,这下我们必须用到LCA来求解。首先要是直接找红色到绿色的距离是很难计算的, 这个题我们转化为求红色点到根的距离 + 绿色点到根的距离 - 两倍的粉色距离。经过这样的一步转化,我们在lca的时候只要保存每个点到根的距离,就可以在o(1)时间解决问题。本题是一道较好的lca题目,也是我们笔试中遇到的困难级别了,希望大家好好掌握。这个题是一道非常非常经典的LCA问题,我解释下思路。
2023-03-11 21:08:29
153
2
原创 探索DFS的常见剪枝方案
因为DFS的迭代加深方式,99%的题目,我们在需要剪枝的时候都是从大到小去搜索, 原因在于我们在大的深度肯定比小的要小,如果后面遇到了最优方案就可以返回,转化为代码就是加一行排序, 不要小看这个排序,很多时候最少可以少搜索一半的路径。
2023-02-25 16:52:52
189
4
原创 Skiplist 和LRU Cache
由于本人最近在看redis, 其实很多DB都使用了跳表和LRU, 跳表目的是为了Logn时间内查找,添加删除节点,相对于红黑树,AVL,哈希等,跳表最大的优势就是实现简单,代码短,你只需要花费白天时间就可以自己写出简单的跳表。跳表的图像是这样的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DGKKFnmC-1677074997650)(C:\Users\41988\Desktop\image-20230222214432980.png)]
2023-02-22 22:12:57
211
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人