随笔分类 -  链表

摘要:三步走方案 第一步:原链表基础上每个节点后新建一个完全一致的辅助节点,例如1->2->3, 调整后为1->1^->2->2^->3->3^ 第二步:将辅助节点的random节点赋值为原节点random的next,比较绕口,这里举个例子 比如原节点1的random节点为3,此时1^的random也是3 阅读全文
posted @ 2021-05-25 21:54 jchen104 阅读(81) 评论(0) 推荐(0)
摘要:比较简单的递推 1 class Solution { 2 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { 3 ListNode l3 = new ListNode(),l4=l3; 4 int tag=0; 5 while(l1!= 阅读全文
posted @ 2021-05-24 14:16 jchen104 阅读(37) 评论(0) 推荐(0)
摘要:利用快慢指针来处理 时间O(n),空间O(1) 1 public ListNode middleNode(ListNode head) { 2 if(head==null || head.next==null) return head; 3 ListNode slow=head,fast=head. 阅读全文
posted @ 2021-05-06 09:09 jchen104 阅读(24) 评论(0) 推荐(0)
摘要:删除链表元素我们很熟了,但需要确保head如果去除的话该如何返回的问题。 public ListNode removeElements(ListNode head, int val) { ListNode res = new ListNode(0); res.next=head; ListNode 阅读全文
posted @ 2021-04-21 11:26 jchen104 阅读(36) 评论(0) 推荐(0)
摘要:迭代链表中的每个节点,依次递推 public ListNode deleteDuplicates(ListNode head) { ListNode curr=head; while(curr!=null && curr.next!=null){ // 如前后2个节点相同,则丢弃next节点,将当前 阅读全文
posted @ 2021-04-21 11:16 jchen104 阅读(47) 评论(0) 推荐(0)
摘要:对于这题,参数只有需要被删除的这个元素。 这里我们以 4,5,1,9为例,我们要删除1,我们可以将9覆盖1的val,同时将1的next指向9的next, 这样就相当于我们用后一节点的值覆盖当前节点,然后丢下后续节点,直接指向next.next节点。 public void deleteNode(Li 阅读全文
posted @ 2021-04-21 11:03 jchen104 阅读(42) 评论(0) 推荐(0)
摘要:弗洛伊德算法,快慢指针可解 假设headA与headB相交,且分别长a+c,b+c(c为相交长度) 那么必然存在a+c+b+c=b+c+a+c(即当我们遍历完headA后再遍历headB与 先遍历headB再遍历headA,最终一定会在同一节点处相遇) 然后我们发现,即使不相交,依然存在a+b=b+ 阅读全文
posted @ 2021-04-07 16:35 jchen104 阅读(39) 评论(0) 推荐(0)
摘要:快慢指针,也叫佛洛依德算法 即使用一个快指针,每次前进2位,慢指针每次前进1位,如果存在环, 则快慢指针必然会在环的开始处相交(可以参考追及问题) 时间O(n),空间O(1) public boolean hasCycle(ListNode head) { // 首先确保后续节点存在 if (hea 阅读全文
posted @ 2021-04-07 11:51 jchen104 阅读(41) 评论(0) 推荐(0)
摘要:比较简单得题目,一次迭代可以得出结果 时间O(n),空间O(1) public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode l3 = new ListNode(),l4=l3; while (l1!=null && l2!= 阅读全文
posted @ 2021-04-06 15:05 jchen104 阅读(38) 评论(0) 推荐(0)
摘要:使用迭代得方法,用3个指针,分别指向后一个元素,当前元素和前一个元素, null->1->2,flow=null,curr=1,prev=2,迭代时将flow指向curr得next,再将flow指向curr, 最后将prev覆盖curr即可。时间O(n),空间O(1) public ListNode 阅读全文
posted @ 2021-04-06 15:00 jchen104 阅读(37) 评论(0) 推荐(0)