链表
止于?
这个作者很懒,什么都没留下…
展开
-
23. 合并K个排序链表
思路使用一个小顶堆,堆内的元素为链表,并按照堆的第一个元素进行排序。java中优先队列的排序:以小顶堆为例Queue<ListNode> q = new PriorityQueue<>( (ListNode l1,ListNode l2)->{ //升序排列 return l1.val-l2.val; } );每次取堆顶链表的第一个元素,原创 2020-06-25 14:24:49 · 116 阅读 · 0 评论 -
2. 两数相加
题目分析两个链表进行同时遍历的时候,要注意在遍历的过程中都不能为空,否则会出错,当一个链表遍历完成的时候,另一个可能没有遍历完成,要继续遍历。在生成结果链表的时候,最好使用一个哑结点当作头,这样可以省去复杂的条件判断。在进行加法操作的时候注意进位。代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(in原创 2020-06-24 11:18:09 · 110 阅读 · 0 评论 -
146. LRU缓存机制
题目分析添加链接描述有get和put,这是一个键值操作,第一反应是使用map,但是题目有限定条件:首先键值对的大小是有限的,当put键值对的数量超过最大长度时,需要舍弃一些键值对,即那些不常用的键值对。何为不常用的键值对?题目给出的描述为最近最少使用的键值对是不常用键值对,也就是说最近进行put,get操作的键值最不会被淘汰,这样就产生了一个类似队列或者链表的模型:1)每次进行put操作时,如果该值存在于队列之中,就将其拿出并压入队首,如果不存在,则淘汰队尾元素,将该元素插入队头2)每次进行ge原创 2020-06-23 15:52:45 · 115 阅读 · 0 评论