-
Notifications
You must be signed in to change notification settings - Fork 0
/
MergeTwoSortedLists.java
72 lines (49 loc) · 1.76 KB
/
MergeTwoSortedLists.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// https://leetcode.com/problems/merge-two-sorted-lists/
public class MergeTwoSortedLists {
public static void main (String [] args) {
ListNode l1 = new ListNode(1);
ListNode l2 = new ListNode(1, new ListNode(3, new ListNode(4)));
ImprimeListNode(AddIntToList(l1, 2));
}
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null && l2 == null){ return null; }
if (l1 == null ) { return l2; }
if (l2 == null ) { return l1; }
ListNode actual = l1;
while (actual != null) {
ListNode[] respuesta = AddIntToList(l2, actual.val);
l2 = respuesta[0];
actual = actual.next;
}
return l2;
}
public static ListNode[] AddIntToList(ListNode lista, int numero){
ListNode actual = lista;
ListNode objetivo = null;
while (actual != null) {
if ( actual.val > numero) { break; }
if ( actual.val == numero || actual.val < numero ) {
objetivo = actual;
}
actual = actual.next;
}
if (objetivo != null) {
ListNode nuevo = new ListNode(numero,objetivo.next);
objetivo.next = nuevo;
ListNode[] respuesta = {lista,nuevo};
return respuesta;
}
ListNode[] respuesta = {new ListNode(numero,lista),null};
return respuesta;
}
public static void ImprimeListNode(ListNode list) {
ListNode actual = list;
System.out.println("");
System.out.print("[ ");
while (actual != null) {
System.out.print(actual.val+" ");
actual = actual.next;
}
System.out.println("]");
}
}