1. 程式人生 > >LeetCode 21 合併兩個有序連結串列

LeetCode 21 合併兩個有序連結串列

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。

示例:

輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4

解答:

建立三個指標,listNode用於組建合併後的連結串列,head用於記錄listNode的頭指標。

迴圈中的結束條件是有一個連結串列遍歷完成,之後需要將另一個未遍歷完的連結串列剩餘元素補在listNode的後面。但是遍歷完成時,l1或者l2是空指標,需要p指標記錄遍歷完成連結串列的最後一個元素位置。

寫題的時候被l1變數坑了,因為“小寫l”和“1”太像了。阿里Java的規範裡面有要求,“小寫l”一律大寫。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null) return l2;
        if (l2 == null) return l1;


        ListNode listNode =
new ListNode(0); ListNode head = listNode; ListNode p = new ListNode(0); while (l1 != null && l2 != null) { if (l1.val <= l2.val) { listNode.next = l1; p = l1; l1 = l1.next; } else
{ listNode.next = l2; p = l2; l2 = l2.next; } listNode = listNode.next; } if (l1 == null) p.next = l2; if (l2 == null) p.next = l1; // l1 作為返回連結串列 return head.next; } }

相關推薦

LeetCode 21 合併有序連結串列--python

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 # Definiti

leetcode 21. 合併有序連結串列 C語言版

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 可以通過一次遍歷同時掃描

leetcode 21.合併有序連結串列

合併兩個有序連結串列 本人大四實習生,水平有限。有錯望海涵。 思路 可使用遞迴。比較兩個連結串列的頭結點,值小的當頭結點 程式碼 /** * Definition for singly-linked list. * public class

LeetCode 21. 合併有序連結串列 Python

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 # Defini

LeetCode-21. 合併有序連結串列

題目 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 解題

LeetCode 21 ——合併有序連結串列

1. 題目 2. 解答 新建一個帶有哨兵結點的連結串列,依次比較兩個有序連結串列的結點值,將較小值的結點插入到新連結串列後面。直到其中一個比較完畢,將另一個連結串列剩餘的結點全部放到新連結串列最後面

LeetCode 21. 合併有序連結串列(Merge Two Sorted Lists)

題目描述 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1-

[LeetCode]21. 合併有序連結串列 —— javascript

21. 合併兩個有序連結串列 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 var mergeTwoLists = function (l1, l2) { var lHead = new

LeetCode 21. 合併有序連結串列 Merge Two Sorted Lists(C語言)

題目描述: 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4

LeetCode 21.合併有序連結串列 C++程式碼實現

題目描述: 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4

LeetCode 21. 合併有序連結串列

        合併兩個已排序的連結串列,並將其作為一個新列表返回。新列表應該通過拼接前兩個列表的節點來完成。 示例:輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4解題思路:       

leetcode 21. 合併有序連結串列 C++版

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 分析:   首

leetcode-21 合併有序連結串列(MergeTwoSortedLists)-java

題目:合併兩個有序連結串列將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode

LeetCode 21 合併有序連結串列

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 解答:

LeetCode21 合併有序連結串列

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 解題思路: 1

Leetcode演算法Java全解答--21. 合併有序連結串列

Leetcode演算法Java全解答–21. 合併兩個有序連結串列 文章目錄 Leetcode演算法Java全解答--21. 合併兩個有序連結串列 題目 想法 結果 總結 程式碼 我的答案

LeetCode21. 合併有序連結串列

邏輯比較簡單, 但是感覺對連結串列的掌握程度不夠,需要重新學習一遍連結串列的基本操作。 class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* Hea

leetcode21. 合併有序連結串列(C解答)

題目: 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出

Leetcode做題日記:21. 合併有序連結串列(PYTHON)

將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 L1=ListNo

C#LeetCode刷題之#21-合併有序連結串列(Merge Two Sorted Lists)

問題 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 Merge