File tree 8 files changed +389
-202
lines changed
8 files changed +389
-202
lines changed Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 6
6
* ListNode(int x) : val(x), next(NULL) {}
7
7
* };
8
8
*/
9
-
10
9
class Solution {
11
10
public:
12
11
ListNode* mergeTwoLists (ListNode* l1, ListNode* l2) {
13
- if (nullptr == l1 && nullptr == l2) {
14
- return nullptr ;
12
+ ListNode* dummy = new ListNode (0 );
13
+ ListNode* cur = dummy;
14
+ while (l1 && l2) {
15
+ if (l1->val <= l2->val ) {
16
+ cur->next = l1;
17
+ l1 = l1->next ;
18
+ } else {
19
+ cur->next = l2;
20
+ l2 = l2->next ;
21
+ }
22
+ cur = cur->next ;
15
23
}
16
-
17
- if (nullptr == l1 || nullptr == l2) {
18
- return l1 == nullptr ? l2 : l1;
19
- }
20
-
21
- ListNode* node = nullptr ;
22
- if (l1->val > l2->val ) {
23
- node = l2;
24
- node->next = mergeTwoLists (l1, l2->next );
25
- } else {
26
- node = l1;
27
- node->next = mergeTwoLists (l1->next , l2);
28
- }
29
-
30
- return node;
24
+ cur->next = l1 ? l1 : l2;
25
+ return dummy->next ;
31
26
}
32
27
};
Original file line number Diff line number Diff line change 8
8
*/
9
9
public class Solution {
10
10
public ListNode MergeTwoLists ( ListNode l1 , ListNode l2 ) {
11
- ListNode p = new ListNode ( ) ;
12
- ListNode q = p ;
11
+ ListNode dummy = new ListNode ( 0 ) ;
12
+ ListNode cur = dummy ;
13
13
while ( l1 != null && l2 != null ) {
14
- if ( l1 . val < l2 . val ) {
15
- p . next = l1 ;
14
+ if ( l1 . val <= l2 . val ) {
15
+ cur . next = l1 ;
16
16
l1 = l1 . next ;
17
17
} else {
18
- p . next = l2 ;
18
+ cur . next = l2 ;
19
19
l2 = l2 . next ;
20
20
}
21
- p = p . next ;
21
+ cur = cur . next ;
22
22
}
23
- p . next = l1 == null ? l2 : l1 ;
24
- return q . next ;
23
+ cur . next = l1 == null ? l2 : l1 ;
24
+ return dummy . next ;
25
25
}
26
26
}
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for singly-linked list.
3
+ * type ListNode struct {
4
+ * Val int
5
+ * Next *ListNode
6
+ * }
7
+ */
1
8
func mergeTwoLists (l1 * ListNode , l2 * ListNode ) * ListNode {
2
- if l1 == nil {
3
- return l2
4
- }
5
- if l2 == nil {
6
- return l1
7
- }
8
- if l1 .Val <= l2 .Val {
9
- l1 .Next = mergeTwoLists (l1 .Next ,l2 )
10
- return l1
11
- }
12
- l2 .Next = mergeTwoLists (l1 , l2 .Next )
13
- return l2
9
+ dummy := & ListNode {}
10
+ cur := dummy
11
+ for l1 != nil && l2 != nil {
12
+ if l1 .Val <= l2 .Val {
13
+ cur .Next = l1
14
+ l1 = l1 .Next
15
+ } else {
16
+ cur .Next = l2
17
+ l2 = l2 .Next
18
+ }
19
+ cur = cur .Next
20
+ }
21
+ if l1 == nil {
22
+ cur .Next = l2
23
+ } else {
24
+ cur .Next = l1
25
+ }
26
+ return dummy .Next
14
27
}
Original file line number Diff line number Diff line change 9
9
class Solution {
10
10
public ListNode mergeTwoLists (ListNode l1 , ListNode l2 ) {
11
11
ListNode dummy = new ListNode (0 );
12
- ListNode p = dummy ;
12
+ ListNode cur = dummy ;
13
13
while (l1 != null && l2 != null ) {
14
14
if (l1 .val <= l2 .val ) {
15
- p .next = l1 ;
15
+ cur .next = l1 ;
16
16
l1 = l1 .next ;
17
17
} else {
18
- p .next = l2 ;
18
+ cur .next = l2 ;
19
19
l2 = l2 .next ;
20
20
}
21
- p = p .next ;
21
+ cur = cur .next ;
22
22
}
23
- p .next = l1 == null ? l2 : l1 ;
23
+ cur .next = l1 == null ? l2 : l1 ;
24
24
return dummy .next ;
25
25
}
26
26
}
Original file line number Diff line number Diff line change 11
11
* @return {ListNode }
12
12
*/
13
13
var mergeTwoLists = function ( l1 , l2 ) {
14
- if ( ! ( l1 && l2 ) ) {
15
- return l1 || l2 ;
16
- }
17
- if ( l1 . val < l2 . val ) {
18
- l1 . next = mergeTwoLists ( l1 . next , l2 ) ;
19
- return l1 ;
20
- } else {
21
- l2 . next = mergeTwoLists ( l2 . next , l1 ) ;
22
- return l2 ;
14
+ const dummy = new ListNode ( 0 ) ;
15
+ let cur = dummy ;
16
+ 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 ;
23
25
}
26
+ cur . next = l1 || l2 ;
27
+ return dummy . next ;
24
28
} ;
Original file line number Diff line number Diff line change 7
7
8
8
class Solution :
9
9
def mergeTwoLists (self , l1 : ListNode , l2 : ListNode ) -> ListNode :
10
- dummy = ListNode (0 )
11
- p = dummy
10
+ dummy = cur = ListNode (0 )
12
11
while l1 and l2 :
13
12
if l1 .val <= l2 .val :
14
- p .next = l1
13
+ cur .next = l1
15
14
l1 = l1 .next
16
15
else :
17
- p .next = l2
16
+ cur .next = l2
18
17
l2 = l2 .next
19
- p = p .next
20
- p .next = l1 or l2
18
+ cur = cur .next
19
+ cur .next = l1 or l2
21
20
return dummy .next
Original file line number Diff line number Diff line change @@ -14,20 +14,18 @@ function mergeTwoLists(
14
14
l1 : ListNode | null ,
15
15
l2 : ListNode | null ,
16
16
) : ListNode | null {
17
- const duumy = new ListNode ( ) ;
18
- let cur = duumy ;
17
+ const dummy = new ListNode ( 0 ) ;
18
+ let cur = dummy ;
19
19
while ( l1 && l2 ) {
20
- let node : ListNode ;
21
- if ( l1 . val < l2 . val ) {
22
- node = l1 ;
20
+ if ( l1 . val <= l2 . val ) {
21
+ cur . next = l1 ;
23
22
l1 = l1 . next ;
24
23
} else {
25
- node = l2 ;
24
+ cur . next = l2 ;
26
25
l2 = l2 . next ;
27
26
}
28
- cur . next = node ;
29
- cur = node ;
27
+ cur = cur . next ;
30
28
}
31
29
cur . next = l1 || l2 ;
32
- return duumy . next ;
30
+ return dummy . next ;
33
31
}
You can’t perform that action at this time.
0 commit comments