• 【剑指offer】16 合并两个排序的链表


    题目地址:合并两个排序的链表

    题目描述                                   

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

    题目示例                                   

    输入:
    {1,3,5},{2,4,6}
    返回值:
    {1,2,3,4,5,6}

    解法分析                                   

    因为给出的两个链表都是单调递增的,合并后的链表也是单调不递减,所以我们只需要对比两个链表的头结点即可,若哪个链表的头结点更小,就记录在新链表中,然后该链表头结点指向后一个结点,直到两个链表都指向null。返回做记录的新链表即可。见算法1。

    因为需要不断比较两个链表的头结点,所以我们也可以考虑使用递归方法,见算法2。

    代码                                         

    算法1

     1 /*function ListNode(x){
     2     this.val = x;
     3     this.next = null;
     4 }*/
     5 function Merge(pHead1, pHead2)
     6 {
     7     // write code here
     8     if(pHead1 === null) return pHead2;
     9     if(pHead2 === null) return pHead1;
    10     var pHead = new ListNode(0);
    11     var cur = pHead;
    12     while(pHead1 && pHead2){
    13         if(pHead1.val <= pHead2.val){
    14             cur.next = pHead1;
    15             pHead1 = pHead1.next;
    16         }else{
    17             cur.next = pHead2;
    18             pHead2 = pHead2.next;
    19         }
    20         cur = cur.next;
    21     }
    22     cur.next = pHead1 ? pHead1 : pHead2;
    23     return pHead.next;
    24 }

    算法2

     1 function Merge(pHead1, pHead2)
     2 {
     3     // write code here
     4     if(pHead1 === null) return pHead2;
     5     if(pHead2 === null) return pHead1;
     6     var pHead = null;
     7     if(pHead1.val <= pHead2.val){
     8         pHead = pHead1;
     9         pHead.next = Merge(pHead1.next, pHead2);
    10     }else{
    11         pHead = pHead2;
    12         pHead.next = Merge(pHead1, pHead2.next);
    13     }
    14     return pHead;
    15 }

    执行结果                                   

  • 相关阅读:
    POJ
    HDU
    Python之列表
    列表、元组、字典总结
    Python之列表、原组、字典总结
    [P1082][NOIP2012] 同余方程 (扩展欧几里得/乘法逆元)
    [P3957][NOIP2017]跳房子 (DP+二分/队列?)
    [Codeforces896C] Willem, Chtholly and Seniorious (ODT-珂朵莉树)
    [P1005][NOIP2007] 矩阵取数游戏 (DP+高精)
    [POJ1006]生理周期 (中国剩余定理)
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14292031.html
Copyright © 2020-2023  润新知