@@ -295,24 +295,19 @@ var mergeTwoLists = function (list1, list2) {
295
295
*/
296
296
public class Solution {
297
297
public ListNode MergeTwoLists (ListNode list1 , ListNode list2 ) {
298
- ListNode dummy = new ListNode ();
299
- ListNode cur = dummy ;
300
- while (list1 != null && list2 != null )
301
- {
302
- if (list1 .val <= list2 .val )
303
- {
304
- cur .next = list1 ;
305
- list1 = list1 .next ;
306
- }
307
- else
308
- {
309
- cur .next = list2 ;
310
- list2 = list2 .next ;
311
- }
312
- cur = cur .next ;
298
+ if (list1 == null ) {
299
+ return list2 ;
300
+ }
301
+ if (list2 == null ) {
302
+ return list1 ;
303
+ }
304
+ if (list1 .val <= list2 .val ) {
305
+ list1 .next = MergeTwoLists (list1 .next , list2 );
306
+ return list1 ;
307
+ } else {
308
+ list2 .next = MergeTwoLists (list1 , list2 .next );
309
+ return list2 ;
313
310
}
314
- cur .next = list1 == null ? list2 : list1 ;
315
- return dummy .next ;
316
311
}
317
312
}
318
313
```
@@ -332,23 +327,61 @@ public class Solution {
332
327
# @ param {ListNode} list2
333
328
# @ return {ListNode}
334
329
def merge_two_lists (list1 , list2 )
335
- dummy = ListNode .new ()
336
- cur = dummy
337
- while list1 && list2
338
- if list1.val <= list2.val
339
- cur.next = list1
340
- list1 = list1.next
341
- else
342
- cur.next = list2
343
- list2 = list2.next
344
- end
345
- cur = cur.next
330
+ if list1.nil?
331
+ return list2
332
+ end
333
+ if list2.nil?
334
+ return list1
335
+ end
336
+ if list1.val <= list2.val
337
+ list1.next = merge_two_lists(list1.next, list2)
338
+ return list1
339
+ else
340
+ list2.next = merge_two_lists(list1, list2.next)
341
+ return list2
346
342
end
347
- cur.next = list1 || list2
348
- dummy.next
349
343
end
350
344
```
351
345
346
+ #### PHP
347
+
348
+ ``` php
349
+ /**
350
+ * Definition for a singly-linked list.
351
+ * class ListNode {
352
+ * public $val = 0;
353
+ * public $next = null;
354
+ * function __construct($val = 0, $next = null) {
355
+ * $this->val = $val;
356
+ * $this->next = $next;
357
+ * }
358
+ * }
359
+ */
360
+ class Solution {
361
+
362
+ /**
363
+ * @param ListNode $list1
364
+ * @param ListNode $list2
365
+ * @return ListNode
366
+ */
367
+ function mergeTwoLists($list1, $list2) {
368
+ if (is_null($list1)) {
369
+ return $list2;
370
+ }
371
+ if (is_null($list2)) {
372
+ return $list1;
373
+ }
374
+ if ($list1->val <= $list2->val) {
375
+ $list1->next = $this->mergeTwoLists($list1->next, $list2);
376
+ return $list1;
377
+ } else {
378
+ $list2->next = $this->mergeTwoLists($list1, $list2->next);
379
+ return $list2;
380
+ }
381
+ }
382
+ }
383
+ ```
384
+
352
385
<!-- tabs: end -->
353
386
354
387
<!-- solution: end -->
@@ -603,6 +636,72 @@ var mergeTwoLists = function (list1, list2) {
603
636
};
604
637
```
605
638
639
+ #### C#
640
+
641
+ ``` cs
642
+ /**
643
+ * Definition for singly-linked list.
644
+ * public class ListNode {
645
+ * public int val;
646
+ * public ListNode next;
647
+ * public ListNode(int val=0, ListNode next=null) {
648
+ * this.val = val;
649
+ * this.next = next;
650
+ * }
651
+ * }
652
+ */
653
+ public class Solution {
654
+ public ListNode MergeTwoLists (ListNode list1 , ListNode list2 ) {
655
+ ListNode dummy = new ListNode ();
656
+ ListNode curr = dummy ;
657
+ while (list1 != null && list2 != null ) {
658
+ if (list1 .val <= list2 .val ) {
659
+ curr .next = list1 ;
660
+ list1 = list1 .next ;
661
+ } else {
662
+ curr .next = list2 ;
663
+ list2 = list2 .next ;
664
+ }
665
+ curr = curr .next ;
666
+ }
667
+ curr .next = list1 == null ? list2 : list1 ;
668
+ return dummy .next ;
669
+ }
670
+ }
671
+ ```
672
+
673
+ #### Ruby
674
+
675
+ ``` rb
676
+ # Definition for singly-linked list.
677
+ # class ListNode
678
+ # attr_accessor :val, :next
679
+ # def initialize(val = 0, _next = nil)
680
+ # @val = val
681
+ # @next = _next
682
+ # end
683
+ # end
684
+ # @ param {ListNode} list1
685
+ # @ param {ListNode} list2
686
+ # @ return {ListNode}
687
+ def merge_two_lists (list1 , list2 )
688
+ dummy = ListNode .new ()
689
+ cur = dummy
690
+ while list1 && list2
691
+ if list1.val <= list2.val
692
+ cur.next = list1
693
+ list1 = list1.next
694
+ else
695
+ cur.next = list2
696
+ list2 = list2.next
697
+ end
698
+ cur = cur.next
699
+ end
700
+ cur.next = list1 || list2
701
+ dummy.next
702
+ end
703
+ ```
704
+
606
705
#### PHP
607
706
608
707
``` php
@@ -616,18 +715,15 @@ var mergeTwoLists = function (list1, list2) {
616
715
# $this->next = $next;
617
716
# }
618
717
# }
619
-
620
718
class Solution {
621
719
/**
622
720
* @param ListNode $list1
623
721
* @param ListNode $list2
624
722
* @return ListNode
625
723
*/
626
-
627
724
function mergeTwoLists($list1, $list2) {
628
725
$dummy = new ListNode(0);
629
726
$current = $dummy;
630
-
631
727
while ($list1 != null && $list2 != null) {
632
728
if ($list1->val <= $list2->val) {
633
729
$current->next = $list1;
0 commit comments