Leetcode 21. Merge Two Sorted Lists

Posted 茜茜的技术空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 21. Merge Two Sorted Lists相关的知识,希望对你有一定的参考价值。

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.


解题思路:

The key to solve the problem is defining a fake head. Then compare the first elements from each list. Add the smaller one to the merged list. Finally, when one of them is empty, simply append it to the merged list, since it is already sorted.

谁小放谁进去。


Java code:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode fakehead = new ListNode(0);
        ListNode p = fakehead;
        ListNode p1 = l1, p2 = l2;
       
        while(p1!= null && p2 != null) {
           if(p1.val <= p2.val) {
               p.next = p1;
               p1 = p1.next; 
           }else {
               p.next = p2;
               p2 = p2.next;
           }
           p = p.next;
        }
        if(p1 != null) {
            p.next = p1;
        }
        if(p2 != null) {
            p.next = p2;
        }
        return fakehead.next;
    }
}

20160601:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode dummy = new ListNode(0);
        ListNode cur = dummy;
        while (l1 != null && l2 != null) {
            if (l1.val <= l2.val) {
                cur.next = l1;
                l1 = l1.next;
            } else {
                cur.next = l2;  
                l2 = l2.next;
            }
            cur = cur.next;
        }
        if (l1 != null) {
            cur.next = l1;
        }
        if (l2 != null) {
            cur.next = l2;
        }
        return dummy.next;
    }
}

 

Reference:

1. http://www.programcreek.com/2012/12/leetcode-merge-two-sorted-lists-java/

 

以上是关于Leetcode 21. Merge Two Sorted Lists的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode---21. Merge Two Sorted Lists

Leetcode 21. Merge Two Sorted Lists

LeetCode 21. Merge Two Sorted Lists

LeetCode算法-21Merge Two Sorted Lists

Leetcode 21. Merge Two Sorted Lists

[LeetCode] 21. Merge Two Sorted Lists