要求时间复杂度O(nlogn),空间复杂度O(1),采用归并排序 传统的归并排序空间复杂度是O(n),原因是要用一个数组表示合并后的数组,但是这里用链表表示有序链表合并后的链表,由于链表空间复杂度是O(1),所以可以。 链表问题经常出现TLE问题或者MLE问题,这时候要检查链表拼接过程或者循环过程, ...
分类:
编程语言 时间:
2018-02-12 22:24:06
阅读次数:
201
合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 用JavaScript非递归和递归方式都AC了。 非递归: function ListNode(x){ this.val = x; this.next = null; } fu ...
分类:
编程语言 时间:
2018-02-10 20:45:54
阅读次数:
164
链表合并 1 #include<iostream> 2 using namespace std; 3 struct LinkNode 4 { 5 int n; 6 LinkNode *next; 7 }; 8 LinkNode *CreateLinkList();//建立链表: 从标准输入读取数据, ...
分类:
其他好文 时间:
2017-12-31 11:59:49
阅读次数:
244
1、链表节点类 public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 2、链表合并类 public class ListMerge { public ListNod ...
分类:
其他好文 时间:
2017-10-01 23:45:50
阅读次数:
257
一、题目 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 二、思路 注:链表1和链表2是两个递增排序的链表,合并这两个链表得到升序链表为链表3. 首先分析合并两个链表的过程。我们的分析从合并两个链表的头结点开始。链表1的头结点的值小于链表2的头结点的值, ...
分类:
编程语言 时间:
2017-10-01 23:03:24
阅读次数:
281
给定两个有序单链表的头节点head1 和 head2 ,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点 假设两个链表长度为M和N 直接给出时间复杂度为(M+N) 额外空间复杂度O(1) 1 如果两个链表中一个为空 则无需合并 返回另一个的链表头节点 2 比较head1 和 hea ...
分类:
编程语言 时间:
2017-09-11 21:05:30
阅读次数:
142
算法和数据结构这东西,真的是需要常用常练。这道看似简单的链表合并题,难了我好几个小时,最后还是上网搜索了一种不错算法。后期复习完链表的知识我会将我自己的实现代理贴上。 这个算法巧就巧在用了递归的思想,按照常规方法也能求得,但是就未免太复杂了。 Merge two sorted linked list ...
分类:
其他好文 时间:
2017-09-06 00:25:15
阅读次数:
185
1 import java.util.Stack; 2 3 class ListNode { 4 int val; 5 ListNode next = null; 6 7 ListNode(int val) { 8 this.val = val; 9 } 10 } 11 12 public clas... ...
分类:
其他好文 时间:
2017-08-29 21:39:15
阅读次数:
158
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 方法一: 递归实现:两个链表合并为第三个链表pHead3; ...
分类:
编程语言 时间:
2017-08-27 15:27:15
阅读次数:
132
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点人是按照递增排序的。解题思路:两个链表分别都已经是有序的了,遍历链表的时候只要比较两个链表当前位置大小,取出最小的添加到新链表中。 可以有递归、循环两种方式来解决。 ...
分类:
编程语言 时间:
2017-07-30 12:38:44
阅读次数:
200