![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
豆浆油条花生瓜子
研究生在读
展开
-
LRU 算法的思路
使用定长链表来保存所有缓存的值,并且最老的值放在链表最后面。当访问的值在链表中时:删除链表中的值,并重新在链表头添加该值(保证链表中数值的顺序是从新到旧)当访问的值不在链表中时:当链表已满,删除链表中最后一个值,将要添加的值放在链表头当链表未满时:直接在链表头添加如何判断一个字符串是否是回文字符串【用链表和数组存储?】快慢指针,慢指针压栈,快指针到头后,慢指针出栈。栈空为回文串...原创 2021-07-05 19:53:37 · 97 阅读 · 1 评论 -
数组和链表的区别
数组和链表的区别:动态扩容:数组的缺点是大小固定,一经声明就要占用整块连续的内存空间。如果声明的数组过大,系统可能没有足够的连续内存空间分配给它,导致内存不足(OOM);如果声明的数组过小,则可能会出现不够用的情况。这时只能再申请一个更大的内存空间,把原数组拷贝进去,非常耗时。而链表本身没有大小的限制,所以天然支持动态扩容补充:【ArrayList 容器支持动态扩容,当空间不足时,就会申请一个更大的空间,将原数组拷贝过去 】内存的使用:链表中的每个结点都需要消耗和外的存储空间去存储一份指原创 2021-07-04 16:51:31 · 140 阅读 · 0 评论 -
2021-06-14
算法常用数据结构总结优先队列// 【默认】容量是11,按照升序排序PriorityQueue<Integer> queue = new PriorityQueue<>(); // 第一个参数可用来指定容量大小,缺省则用默认值。第二个参数自定义排序规则,降序排序PriorityQueue<Integer> queue = new PriorityQueue<>((a,b)->(b-a)); ...原创 2021-06-14 20:56:16 · 56 阅读 · 0 评论