forked from KnowledgeCenterYoutube/LeetCode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path21_Merge_Two_Sorted_Lists
129 lines (109 loc) · 2.9 KB
/
21_Merge_Two_Sorted_Lists
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Leetcode 21: Merge Two Sorted Lists
Detailed video explanation: https://youtu.be/yn6kTAkf9Mc
====================================================
C++:
----
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(!l1) return l2;
if(!l2) return l1;
ListNode* head = l1;
if(l1->val > l2->val){
head = l2;
l2 = l2->next;
} else
l1 = l1->next;
ListNode* curr = head;
while(l1 && l2){
if(l1->val < l2->val){
curr->next = l1;
l1 = l1->next;
} else {
curr->next = l2;
l2 = l2->next;
}
curr = curr->next;
}
if(!l1) curr->next = l2;
else curr->next = l1;
return head;
}
};
Java:
-----
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1 == null) return l2;
if(l2 == null) return l1;
ListNode head = l1;
if(l1.val > l2.val){
head = l2;
l2 = l2.next;
} else
l1 = l1.next;
ListNode curr = head;
while(l1 != null && l2 != null){
if(l1.val < l2.val){
curr.next = l1;
l1 = l1.next;
} else {
curr.next = l2;
l2 = l2.next;
}
curr = curr.next;
}
if(l1 == null) curr.next = l2;
else curr.next = l1;
return head;
}
}
Python3:
--------
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 == None: return l2
if l2 == None: return l1
head = l1
if l1.val > l2.val:
head = l2
l2 = l2.next
else:
l1 = l1.next
curr = head
while l1 != None and l2 != None:
if l1.val < l2.val:
curr.next = l1
l1 = l1.next
else:
curr.next = l2
l2 = l2.next
curr = curr.next
if l1 == None: curr.next = l2
else: curr.next = l1
return head