
链表题目
dp小王子
讲真的,写博客好累。。。
展开
-
反转单向和双向链表
反转单向和双向链表【题目】 分别实现反转单向链表和反转双向链表的函数。【要求】 如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)public class ReverseList { // 单向链表节点 public static class Node { public int value; public Node next; public Node(...原创 2019-01-04 21:04:06 · 155 阅读 · 0 评论 -
删除无序单链表中值重复出现的节点
【题目】给定一个无序单链表的头节点head,删除其中值重复出现的节点。例如:1->2->3->3->4->4->2->1->1->null,删除值重复重复的节点之后为1->2->3->4->null。请按以下要求实现两种方法:方法1:如果链表长度为N,时间复杂度达到O(N)。方法2:额外空间复杂度为O(1)pu...原创 2019-02-24 14:00:04 · 339 阅读 · 0 评论 -
在单链表中删除指定值的节点
【题目】给定一个链表的头节点head和一个整数num,请实现函数将值为num的节点全部删除。例如,链表为1->2->3->4->null,num = 3,链表调整后为:1->2->4->null。public class RemoveValNode { public static class Node { public int value; ...原创 2019-02-24 14:00:20 · 2369 阅读 · 0 评论 -
将搜索二叉树转换成双向链表
【题目】对二叉树的节点来说,有本身的值域,有指向左孩子和右孩子的两个指针;对双向链表的节点来说,有本身的值域,有指向上一个节点和下一个节点的指针。在结构上,两种结构有相似性,现在有一棵搜索二叉树,请将其转换为一个有序的双向链表。public class ConvertDN { public static class Node { public int value; public Nod...原创 2019-02-24 14:00:36 · 232 阅读 · 0 评论 -
单链表的选择排序
【题目】给定一个无序单链表的头节点head,实现单链表的选择排序。要求:额外空间复杂度为O(1)。public class SelectSortNode { public static class Node { public int value; public Node next; public Node(int value) { this.value = value;...原创 2019-02-24 14:00:53 · 603 阅读 · 0 评论 -
链表模拟约瑟夫问题
【题目】链表模拟约瑟夫问题public class YueSeFu { public static class Node { public int value; public Node next; public Node(int value) { this.value = value; } } public Node kill(Node head, int m) ...原创 2019-03-10 08:18:16 · 148 阅读 · 0 评论 -
一种怪异的节点删除方式
【题目】链表节点值类型为int型,给定一个链表中的节点node,但不给定整个链表的头结点。如何在链表中删除node?实现这个函数,并分析这么做会出现哪些问题。【要求】时间复杂度O(1)public class RemoveNode { public static class Node { public int value; public Node next; public No...原创 2019-03-10 14:46:13 · 150 阅读 · 0 评论 -
向有序的环形单链表中插入新节点
【题目】一个环形单链表从头结点head开始不降序,同时由最后的节点指回头结点。给定这样一个环形单链表的头结点head和一个整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后的链表依然有序。public class InsertNum { public static class Node { public int value; public Node next;...原创 2019-03-10 14:46:38 · 230 阅读 · 0 评论 -
合并两个有序的单链表
【题目】给定两个有序单链表的头结点head1和head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头结点。public class MergeLinkedList { public static class Node { public int value; public Node next; public Node(int value) { this.v...原创 2019-03-10 14:46:54 · 274 阅读 · 0 评论 -
将单链表的每K个节点之间逆序
【题目】给定一个单链表的头节点head,实现一个调整单链表的函数,使得每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点。例如:链表1->2->3->4->5->6->7->8->null,k=3.调整后为:3->2->1->6->5->4->7->8->null。其原创 2019-02-24 13:59:41 · 615 阅读 · 0 评论 -
两个单链表生成相加链表
【题目】假设链表中每一个节点的值都在0~9之间,那么链表整体就可以代表一个整数。例如:9->3->7,可以代表整数937.给定两个两个这种链表的头结点head1和head2,请生成代表两个整数相加值的结果链表。例如:链表1为9->3->7,链表2为6->3,最后生成新的结果链表为1->0->0->0。public class TwoLinke...原创 2019-01-21 22:33:03 · 553 阅读 · 0 评论 -
打印两个有序链表的公共部分
打印两个有序链表的公共部分【题目】 给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。public class PrintCommonPart { public static class Node { public int value; public Node next; public Node(int value) { this.value = v...原创 2019-01-04 21:05:47 · 187 阅读 · 0 评论 -
判断一个链表是否为回文结构
判断一个链表是否为回文结构【题目】 给定一个链表的头节点head,请判断该链表是否为回文结构。 例如: 1->2->1,返回true。 1->2->2->1,返回true。15->6->15,返回true。 1->2->3,返回false。进阶: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)。public clas...原创 2019-01-04 21:28:42 · 113 阅读 · 0 评论 -
将单向链表按某值划分成左边小、中间相等、右边大的形式
将单向链表按某值划分成左边小、中间相等、右边大的形式【题目】 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整 数pivot。实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot的节点,中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。除这个要求外,对调整后的节点顺序没有更多的要求。 例如:链表9->0->4->5-1,piv...原创 2019-01-05 20:32:45 · 111 阅读 · 0 评论 -
复制含有随机指针节点的链表
复制含有随机指针节点的链表【题目】 一种特殊的链表节点类描述如下:public class Node { public int value; public Node next; publicNode rand; public Node(int value) { this.value = value; }}Node类中的va...原创 2019-01-07 15:46:25 · 105 阅读 · 0 评论 -
两个单链表相交的一系列问题
两个单链表相交的一系列问题【题目】 在本题中,单链表可能有环,也可能无环。给定两个单链表的头节点 head1和head2,这两个链表可能相交,也可能不相交。请实现一个函数, 如果两个链表相交,请返回相交的第一个节点;如果不相交,返回null 即可。要求:如果链表1的长度为N,链表2的长度为M,时间复杂度请达到 O(N+M),额外空间复杂度请达到O(1)。public class FindFi...原创 2019-01-07 15:46:46 · 330 阅读 · 1 评论 -
【题目】反转部分单向链表
【题目】反转部分单向链表,时间复杂度O(N),空间复杂度O(1)public class reversePartNode { public static class Node { public int value; public Node next; public Node(int value) { this.value = value; } } public s...原创 2019-01-21 21:48:53 · 142 阅读 · 0 评论 -
【题目】删除链表的中间节点和ab处的节点
【题目】删除链表的中间节点和a/b处的节点public class DeleteMidAndabNode { public static class Node { public int value; public Node next; public Node(int value) { this.value = value; } } // 删除中间节点 publi...原创 2019-01-21 21:49:07 · 156 阅读 · 0 评论 -
在单链表和双链表中删除倒数第k个节点
【题目】在单链表和双链表中删除倒数第k个节点要求:如果链表长度为N,时间复杂度O(N),额外空间复杂的O(1)public class DeleteLastKthNode { public static class Node { public int value; public Node next; public Node(int value) { this.value ...原创 2019-01-21 21:49:19 · 162 阅读 · 0 评论 -
按照左右半区的方式重新组合单链表
【题目】给定一个单链表的头部节点head,链表长度为N ,如果N为偶数,那么前N/2个节点算作左半区,后N/2个节点算作右半区;如果N为奇数,那么前N/2个节点算作左半区,后N/2+1个节点算作右半区。左半区从左到右依次记为L1->L2->…,右半区从左到右依次记为R1->R2->…,请将单链表调整成L1->R1->L2->R2->…的形式。pub...原创 2019-03-10 14:47:09 · 168 阅读 · 0 评论