File tree 1 file changed +31
-0
lines changed
algorithms/mergeTwoSortedLists
1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 1
1
public class Solution {
2
+
3
+ //迭代,空间复杂度O(m+n)
2
4
public ListNode mergeTwoLists (ListNode l1 , ListNode l2 ) {
3
5
if (null == l1 ) {
4
6
return l2 ;
@@ -12,4 +14,33 @@ public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
12
14
return l2 ;
13
15
}
14
16
}
17
+
18
+ //递归,空间复杂度O(1)
19
+ public ListNode iterationTwoLists (ListNode l1 , ListNode l2 ) {
20
+ //链表头部节点
21
+ ListNode preHeadNode = new ListNode (-1 );
22
+ //返回排序链表的指针
23
+ ListNode prev = preHeadNode ;
24
+ while (null != l1 && null != l2 ) {
25
+ if (l1 .val <= l2 .val ) {
26
+ prev .next = l1 ;
27
+ l1 = l1 .next ;
28
+ } else {
29
+ prev .next = l2 ;
30
+ l2 = l2 .next ;
31
+ }
32
+ prev = prev .next ;
33
+ }
34
+ prev .next = null == l1 ? l2 : l1 ;
35
+ return preHeadNode .next ;
36
+ }
37
+
38
+ static class ListNode {
39
+ public int val ;
40
+ public ListNode next ;
41
+
42
+ public ListNode (int val ) {
43
+ this .val = val ;
44
+ }
45
+ }
15
46
}
You can’t perform that action at this time.
0 commit comments