算法--链表
wangdongli_1993
这个作者很懒,什么都没留下…
展开
-
复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) package xidian.lili.niuke;public class CloneRandomListNode { public RandomL...原创 2018-08-08 08:21:53 · 75 阅读 · 0 评论 -
合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。递归实现/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class S...原创 2018-08-06 16:30:48 · 77 阅读 · 0 评论 -
反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.ArrayList;//import java.ut...原创 2018-08-06 15:58:46 · 75 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。 方法一:基于基数,倒数第k个,是正数的总数-k+1 /*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class S...原创 2018-08-05 17:36:22 · 70 阅读 · 0 评论 -
两个链表的第一个公共结点
题目描述输入两个链表,找出它们的第一个公共结点。方法一利用HashMap的特性,当添加第二个列表,遇到已经在map中的,直接返回该节点 package xidian.lili.niuke;import java.util.HashMap;import xidian.lili.niuke.FirstCommonNode.ListNode;public class Fir...原创 2018-08-09 10:12:06 · 107 阅读 · 0 评论 -
链表中环的入口结点(快指针慢指针相遇)
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 (1)快的指针一下走两个节点,慢的指针一下有一个节点,当两个指针相遇时,说明肯定有环(2)相遇时,快的一共走过的节点是2x,慢的一共走过的节点是x;而两个指针都是从起点开始出发,到环入口点走过的节点是一样的,所以2x-x就是环节点的整数倍,刚好就x,刚好就是慢的节点所走的节点数目,也就是慢的节点从头...原创 2018-08-28 22:24:52 · 320 阅读 · 0 评论 -
删除链表中重复的结点(递归)
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5class ListNode { int val; ListNode next = null; ListNode(int val) {...原创 2018-08-29 14:38:21 · 792 阅读 · 0 评论 -
链表(拆分,反转,合并)
题目描述 Given a singly linked list L: L 0→L 1→…→L n-1→L n,reorder it to: L 0→L n →L 1→L n-1→L 2→L n-2→…You must do this in-place without altering the nodes' values.For example,Given{1,2,3,4}, r...原创 2018-09-07 20:18:43 · 1502 阅读 · 0 评论 -
sort-list(归并排序和插入排序使得链表有序)
题目描述Sort a linked list in O(n log n) time using constant space complexity.归并排序算法:时间复杂度是O(logn),对于数组,空间复杂度是O(n),对于链表空间复杂度是O(1)链表的归并排序:(1)根据快慢指针知道中间的指针(2)把链表从中间位置的指针断开(3)递归调用,不喝合并两个有序的两部分链表...原创 2018-09-06 09:20:07 · 571 阅读 · 0 评论