合并两个排序的链表

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

递归版

递归版详解

function Merge(pHead1, pHead2) {
    // write code here
    let head = null
    if(pHead1 === null) {
      return pHead2
    }
    if(pHead2 === null) {
      return pHead1
    }
    if(pHead1.val < pHead2.val) {
      head = pHead1
      head.next = Merge(pHead1.next, pHead2)
    } else {
      head = pHead2
      head.next = Merge(pHead1, pHead2.next)
    }
    return head
  }

非递归版本

讨论区

  function Merge(pHead1, pHead2) {
    if (pHead1 === null) {
      return pHead2
    }
    if (pHead2 === null) {
      return pHead1
    }
    let mergeHead = null
    let current = null
    while (pHead1 !== null && pHead2 !== null) {
      if (pHead1.val <= pHead2.val) {
        if (mergeHead === null) {
          mergeHead = current = pHead1
        } else {
          current.next = pHead1
          current = current.next
        }
        pHead1 = pHead1.next
      } else {
        if (mergeHead === null) {
          mergeHead = current = pHead2
        } else {
          current.next = pHead2
          current = current.next
        }
        pHead2 = pHead2.next
      }
    }
    if (pHead1 === null) {
      current.next = pHead2
    } else {
      current.next = pHead1
    }
    return mergeHead
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 代码实现 ...
    _minimal阅读 7,202评论 1 0
  • 题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 代码一: 这是...
    qming_c阅读 1,630评论 0 0
  • 题目 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路 基本思路...
    Joseph_Chu阅读 1,261评论 0 0
  • 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 第一种 使用一个du...
    lvlvforever阅读 1,760评论 0 0
  • 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路 ...
    繁著阅读 1,652评论 0 0

友情链接更多精彩内容