Skip to content

Commit 9d4d8ea

Browse files
committed
feat: update solutions to lc problem: No.0021. Merge Two Sorted Lists
1 parent f623a77 commit 9d4d8ea

File tree

5 files changed

+127
-71
lines changed

5 files changed

+127
-71
lines changed

solution/0000-0099/0021.Merge Two Sorted Lists/README.md

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646

4747
<!-- 这里可写通用的实现逻辑 -->
4848

49+
迭代遍历两链表,比较节点值 val 的大小,进行节点串联,得到最终链表。
50+
4951
<!-- tabs:start -->
5052

5153
### **Python3**
@@ -125,7 +127,7 @@ class Solution {
125127
class Solution {
126128
public:
127129
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
128-
ListNode* dummy = new ListNode(0);
130+
ListNode* dummy = new ListNode();
129131
ListNode* cur = dummy;
130132
while (l1 && l2) {
131133
if (l1->val <= l2->val) {
@@ -137,11 +139,7 @@ public:
137139
}
138140
cur = cur->next;
139141
}
140-
if (l1) {
141-
cur->next = l1;
142-
} else if (l2) {
143-
cur->next = l2;
144-
}
142+
cur->next = l1 ? l1 : l2;
145143
return dummy->next;
146144
}
147145
};
@@ -162,21 +160,21 @@ public:
162160
* @param {ListNode} l2
163161
* @return {ListNode}
164162
*/
165-
var mergeTwoLists = function (l1, l2) {
166-
const dummy = new ListNode(0);
167-
let cur = dummy;
168-
while (l1 && l2) {
169-
if (l1.val <= l2.val) {
170-
cur.next = l1;
171-
l1 = l1.next;
172-
} else {
173-
cur.next = l2;
174-
l2 = l2.next;
163+
var mergeTwoLists = function(l1, l2) {
164+
const dummy = new ListNode();
165+
let cur = dummy;
166+
while (l1 && l2) {
167+
if (l1.val <= l2.val) {
168+
cur.next = l1;
169+
l1 = l1.next;
170+
} else {
171+
cur.next = l2;
172+
l2 = l2.next;
173+
}
174+
cur = cur.next;
175175
}
176-
cur = cur.next;
177-
}
178-
cur.next = l1 || l2;
179-
return dummy.next;
176+
cur.next = l1 || l2;
177+
return dummy.next;
180178
};
181179
```
182180

@@ -212,6 +210,38 @@ func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
212210
}
213211
```
214212

213+
### **Ruby**
214+
215+
```rb
216+
# Definition for singly-linked list.
217+
# class ListNode
218+
# attr_accessor :val, :next
219+
# def initialize(val = 0, _next = nil)
220+
# @val = val
221+
# @next = _next
222+
# end
223+
# end
224+
# @param {ListNode} l1
225+
# @param {ListNode} l2
226+
# @return {ListNode}
227+
def merge_two_lists(l1, l2)
228+
dummy = ListNode.new()
229+
cur = dummy
230+
while l1 && l2
231+
if l1.val <= l2.val
232+
cur.next = l1
233+
l1 = l1.next
234+
else
235+
cur.next = l2
236+
l2 = l2.next
237+
end
238+
cur = cur.next
239+
end
240+
cur.next = l1 || l2
241+
dummy.next
242+
end
243+
```
244+
215245
### **...**
216246

217247
```

solution/0000-0099/0021.Merge Two Sorted Lists/README_EN.md

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class Solution {
115115
class Solution {
116116
public:
117117
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
118-
ListNode* dummy = new ListNode(0);
118+
ListNode* dummy = new ListNode();
119119
ListNode* cur = dummy;
120120
while (l1 && l2) {
121121
if (l1->val <= l2->val) {
@@ -127,11 +127,7 @@ public:
127127
}
128128
cur = cur->next;
129129
}
130-
if (l1) {
131-
cur->next = l1;
132-
} else if (l2) {
133-
cur->next = l2;
134-
}
130+
cur->next = l1 ? l1 : l2;
135131
return dummy->next;
136132
}
137133
};
@@ -152,21 +148,21 @@ public:
152148
* @param {ListNode} l2
153149
* @return {ListNode}
154150
*/
155-
var mergeTwoLists = function (l1, l2) {
156-
const dummy = new ListNode(0);
157-
let cur = dummy;
158-
while (l1 && l2) {
159-
if (l1.val <= l2.val) {
160-
cur.next = l1;
161-
l1 = l1.next;
162-
} else {
163-
cur.next = l2;
164-
l2 = l2.next;
151+
var mergeTwoLists = function(l1, l2) {
152+
const dummy = new ListNode();
153+
let cur = dummy;
154+
while (l1 && l2) {
155+
if (l1.val <= l2.val) {
156+
cur.next = l1;
157+
l1 = l1.next;
158+
} else {
159+
cur.next = l2;
160+
l2 = l2.next;
161+
}
162+
cur = cur.next;
165163
}
166-
cur = cur.next;
167-
}
168-
cur.next = l1 || l2;
169-
return dummy.next;
164+
cur.next = l1 || l2;
165+
return dummy.next;
170166
};
171167
```
172168

@@ -202,6 +198,38 @@ func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
202198
}
203199
```
204200

201+
### **Ruby**
202+
203+
```rb
204+
# Definition for singly-linked list.
205+
# class ListNode
206+
# attr_accessor :val, :next
207+
# def initialize(val = 0, _next = nil)
208+
# @val = val
209+
# @next = _next
210+
# end
211+
# end
212+
# @param {ListNode} l1
213+
# @param {ListNode} l2
214+
# @return {ListNode}
215+
def merge_two_lists(l1, l2)
216+
dummy = ListNode.new()
217+
cur = dummy
218+
while l1 && l2
219+
if l1.val <= l2.val
220+
cur.next = l1
221+
l1 = l1.next
222+
else
223+
cur.next = l2
224+
l2 = l2.next
225+
end
226+
cur = cur.next
227+
end
228+
cur.next = l1 || l2
229+
dummy.next
230+
end
231+
```
232+
205233
### **...**
206234

207235
```

solution/0000-0099/0021.Merge Two Sorted Lists/Solution.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
class Solution {
1212
public:
1313
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
14-
ListNode* dummy = new ListNode(0);
14+
ListNode* dummy = new ListNode();
1515
ListNode* cur = dummy;
1616
while (l1 && l2) {
1717
if (l1->val <= l2->val) {
@@ -23,11 +23,7 @@ class Solution {
2323
}
2424
cur = cur->next;
2525
}
26-
if (l1) {
27-
cur->next = l1;
28-
} else if (l2) {
29-
cur->next = l2;
30-
}
26+
cur->next = l1 ? l1 : l2;
3127
return dummy->next;
3228
}
3329
};

solution/0000-0099/0021.Merge Two Sorted Lists/Solution.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@
1010
* @param {ListNode} l2
1111
* @return {ListNode}
1212
*/
13-
var mergeTwoLists = function (l1, l2) {
14-
const dummy = new ListNode(0);
13+
var mergeTwoLists = function(l1, l2) {
14+
const dummy = new ListNode();
1515
let cur = dummy;
1616
while (l1 && l2) {
17-
if (l1.val <= l2.val) {
18-
cur.next = l1;
19-
l1 = l1.next;
20-
} else {
21-
cur.next = l2;
22-
l2 = l2.next;
23-
}
24-
cur = cur.next;
17+
if (l1.val <= l2.val) {
18+
cur.next = l1;
19+
l1 = l1.next;
20+
} else {
21+
cur.next = l2;
22+
l2 = l2.next;
23+
}
24+
cur = cur.next;
2525
}
2626
cur.next = l1 || l2;
2727
return dummy.next;
28-
};
28+
};
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
# Definition for singly-linked list.
22
# class ListNode
33
# attr_accessor :val, :next
4-
# def initialize(val)
4+
# def initialize(val = 0, _next = nil)
55
# @val = val
6-
# @next = nil
6+
# @next = _next
77
# end
88
# end
9-
109
# @param {ListNode} l1
1110
# @param {ListNode} l2
1211
# @return {ListNode}
1312
def merge_two_lists(l1, l2)
14-
if l1.nil?
15-
l2
16-
elsif l2.nil?
17-
l1
18-
elsif l1.val < l2.val
19-
l1.next = merge_two_lists(l1.next, l2)
20-
l1
21-
else
22-
l2.next = merge_two_lists(l1, l2.next)
23-
l2
13+
dummy = ListNode.new()
14+
cur = dummy
15+
while l1 && l2
16+
if l1.val <= l2.val
17+
cur.next = l1
18+
l1 = l1.next
19+
else
20+
cur.next = l2
21+
l2 = l2.next
22+
end
23+
cur = cur.next
2424
end
25-
end
25+
cur.next = l1 || l2
26+
dummy.next
27+
end

0 commit comments

Comments
 (0)