zoukankan      html  css  js  c++  java
  • 【剑指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 }

    执行结果                                   

  • 相关阅读:
    Timed Code
    jQuery的deferred对象详解
    ASP.NET MVC 使用Redis共享Session
    .NET垃圾回收(GC)原理
    强命名程序集,签名,延迟签名
    CLR 关于强命名程序集 .
    .NET程序集强命名删除与再签名技术 源代码剖析
    应用Strong Name保存.NET应用程序集
    使用强命名程序集防范篡改
    1.浅谈CLR
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14292031.html
Copyright © 2011-2022 走看看