zoukankan      html  css  js  c++  java
  • LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)

    题目描述

    将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

    示例:

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

    解题思路

    首先找到新链表头节点,即两个链表头节点值较小的节点,然后以头节点所在链表为准,依次将另一个链表插入到对应位置中。

    代码

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
    12         if(l1 == NULL) return l2;
    13         if(l2 == NULL) return l1;
    14         if(l1->val > l2->val)
    15             return mergeTwoLists(l2, l1);
    16         ListNode* head = l1;
    17         while(l1->next && l2){
    18             if(l1->next->val > l2->val){
    19                 ListNode* next = l2->next;
    20                 l2->next = l1->next;
    21                 l1->next = l2;
    22                 l2 = next;
    23             }
    24             l1 = l1->next;
    25         }
    26         if(l2) l1->next = l2;
    27         return head;
    28     }
    29 };
  • 相关阅读:
    ios 重构笔记
    ios uiwindow笔记
    ios静态库笔记
    ios app提交之前需要哪几个证书
    int、long、long long取值范围
    字节概述
    序列化概述
    LeetCode 最大连续子数列值
    198. LeetCode 打家劫舍
    git自定义关键字
  • 原文地址:https://www.cnblogs.com/wmx24/p/9543086.html
Copyright © 2011-2022 走看看