1. 程式人生 > >代碼題(14)— 合並有序鏈表

代碼題(14)— 合並有序鏈表

clas 給定 代碼 拼接 AS lists efi pub 假設

1、21. 合並兩個有序鏈表

將兩個有序鏈表合並為一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。

示例:

輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == nullptr) return l2; if(l2 == nullptr) return l1; ListNode * res = nullptr; if(l1->val < l2->val) { res = l1; res->next = mergeTwoLists(l1->next, l2); }
if(l1->val >= l2->val) { res = l2; res->next = mergeTwoLists(l1, l2->next); } return res; } };

2、88. 合並兩個有序數組

給定兩個有序整數數組 nums1 nums2,將 nums2 合並到 nums1 使得 num1 成為一個有序數組。

說明:

  • 初始化 nums1nums2 的元素數量分別為 mn
  • 你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n
    )來保存 nums2 中的元素。

示例:

輸入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

輸出: [1,2,2,3,5,6]



代碼題(14)— 合並有序鏈表