File tree Expand file tree Collapse file tree 2 files changed +12
-21
lines changed
0021_merge_two_sorted_lists Expand file tree Collapse file tree 2 files changed +12
-21
lines changed Original file line number Diff line number Diff line change @@ -9,25 +9,21 @@ struct ListNode {
9
9
static struct ListNode * mergeTwoLists (struct ListNode * l1 , struct ListNode * l2 )
10
10
{
11
11
struct ListNode dummy ;
12
- struct ListNode * prev = & dummy ;
12
+ struct ListNode * tail = & dummy ;
13
13
dummy .next = l1 ;
14
14
15
15
while (l1 != NULL && l2 != NULL ) {
16
16
if (l1 -> val <= l2 -> val ) {
17
- prev = l1 ;
17
+ tail -> next = l1 ;
18
18
l1 = l1 -> next ;
19
19
} else {
20
- struct ListNode * tmp = l2 -> next ;
21
- l2 -> next = l1 ;
22
- prev -> next = l2 ;
23
- prev = l2 ;
24
- l2 = tmp ;
20
+ tail -> next = l2 ;
21
+ l2 = l2 -> next ;
25
22
}
23
+ tail = tail -> next ;
26
24
}
27
25
28
- if (l2 != NULL ) {
29
- prev -> next = l2 ;
30
- }
26
+ tail -> next = l1 != NULL ? l1 : l2 ;
31
27
32
28
return dummy .next ;
33
29
}
Original file line number Diff line number Diff line change @@ -15,26 +15,21 @@ using namespace std;
15
15
class Solution {
16
16
public:
17
17
ListNode* mergeTwoLists (ListNode* l1, ListNode* l2) {
18
- struct ListNode *prev, dummy;
19
-
20
- prev = &dummy;
18
+ struct ListNode *tail, dummy;
19
+ tail = &dummy;
21
20
dummy.next = l1;
21
+
22
22
while (l1 != nullptr && l2 != nullptr ) {
23
23
if (l1->val <= l2->val ) {
24
- prev = l1;
24
+ tail-> next = l1;
25
25
l1 = l1->next ;
26
26
} else {
27
- struct ListNode *tmp = l2;
27
+ tail-> next = l2;
28
28
l2 = l2->next ;
29
- tmp->next = l1;
30
- prev->next = tmp;
31
- prev = tmp;
32
29
}
33
30
}
34
31
35
- if (l2 != nullptr ) {
36
- prev->next = l2;
37
- }
32
+ tail->next = l1 != nullptr ? l1 : l2;
38
33
39
34
return dummy.next ;
40
35
}
You can’t perform that action at this time.
0 commit comments