
leetcode
文章平均质量分 81
请叫我Oscar
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
代码随想录-107-96.不同的二叉搜索树
我在刷卡哥的“代码随想录”,自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。原创 2023-07-21 10:19:48 · 393 阅读 · 0 评论 -
leetcode-743. 网络延迟时间
Dijkstra算法的时间复杂度取决于使用的数据结构,如果使用数组或链表存储顶点集合,时间复杂度为O(n^2),如果使用优先队列或二叉堆存储顶点集合,时间复杂度为O((m+n)logn),其中n是顶点数,m是边数。Dijkstra算法的基本思想是贪心策略,每次从未确定最短路径的顶点中选择距离源点最近的一个,然后以该顶点为中介,更新其他顶点到源点的距离。创建一个双向链表类DoubleLinkList,实现头尾虚拟节点,并且初始化他们的相互连接。并且实现删除头结点,插入节点,插入尾节点功能。原创 2023-05-21 20:36:50 · 812 阅读 · 1 评论 -
leetcode-146. LRU 缓存
如果键不存在,则创建一个新节点,并插入到链表尾部,同时检查缓存容量是否超出限制,如果超出则删除链表头部的节点。相比较,单向链表如果只有一个虚拟头结点,他只能以O(1)的时间复杂度在头部获取、删除、添加节点)。LRU算法是一种缓存淘汰策略,它认为最近使用过的数据应该是有用的,而很久都没用过的数据应该是无用的,所以当缓存满了时,优先删除最久未使用的数据。LRU算法的时间复杂度为 O (1),因为哈希表和双向链表的操作都是常数时间的。这时候考虑到链表的删除和插入的时间复杂度都为O(1),所以考虑使用链表。原创 2023-05-07 15:33:33 · 216 阅读 · 0 评论