zoukankan      html  css  js  c++  java
  • 合并两个排序的链表

    题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

    这道题也是很基础的一道题,当两个链表都有值时,也就是它们都不为空时,我们需要对比它们表头的大小,让新链表指向值小的那个链表。这里需要给新链表定义一个虚拟头节点。指向操作完成后,让值小的那个链表往前走一个,新链表也往前走一个。

    当某个链表走到空时,会跳出循环,这时我们看一下哪个链表还不为空,如果有不为空的链表,则把它直接加到新链表的后面。

    c++代码如下:

     1 class Solution {
     2 public:
     3     ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
     4     {
     5         ListNode* pHead3 = new ListNode(-1);
     6         auto dummy = pHead3;
     7         while(pHead1 && pHead2){
     8             if(pHead1->val <= pHead2->val){
     9                 pHead3->next = pHead1;
    10                 pHead1 = pHead1->next;
    11             }
    12             else{
    13                 pHead3->next = pHead2;
    14                 pHead2 = pHead2->next;
    15             }
    16             pHead3 = pHead3->next;
    17         }
    18         if(pHead1) pHead3->next = pHead1;
    19         if(pHead2) pHead3->next = pHead2;
    20         return dummy->next;
    21     }
    22 };
  • 相关阅读:
    1641. 统计字典序元音字符串的数目
    1688. 比赛中的配对次数
    核心思路
    面试题 16.17. 连续数列
    70. 爬楼梯
    面试题 08.01. 三步问题
    剑指Offer 42. 连续子数组的最大和
    设计模式之原型模式
    代理模式之动态代理
    设计模式之禅(六大设计原则)
  • 原文地址:https://www.cnblogs.com/hellosnow/p/12077986.html
Copyright © 2011-2022 走看看