写点什么

LeetCode 题解:1669. 合并两个链表,JavaScript,详细注释

作者:Lee Chen
  • 2024-06-27
    福建
  • 本文字数:738 字

    阅读完需:约 2 分钟

原题链接:https://leetcode.cn/problems/merge-in-between-linked-lists/


解题思路:


  1. 注意该题传入的ab是链表的索引,而不是节点的值

  2. 先遍历list1,找到a-1b+1节点

  3. a-1next指向list2的头节点

  4. 在将list2的尾节点的next指向b+1节点

  5. 返回list1,此时它为新链表


/** * Definition for singly-linked list. * function ListNode(val, next) { *     this.val = (val===undefined ? 0 : val) *     this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} list1 * @param {number} a * @param {number} b * @param {ListNode} list2 * @return {ListNode} */var mergeInBetween = function(list1, a, b, list2) {  let start = null // 存储连接list2的起点,即a-1节点  let end = null // 存储list2终点的节点,即b+1节点  let prev = new ListNode(null, list1) // 创建一个虚拟节点,它连接着list1的起点  let node = list1 // 用node遍历list1链表,查找a和b节点  let index = 0 // 记录链表的索引
// 遍历list1,查找start和end while (node) { // 当index === a时,它的上一个节点prev就是a-1节点 if (index === a) { start = prev } // 当index - 1 === b时,当前节点即为b+1节点 if (index - 1 === b) { end = node break } // 每次循环索引加1 index++ // 每次循环,prev和node都向前移动一位 prev = node node = node.next } // 将start连接到list2的头节点 start.next = list2 // 不断循环查找到list2的尾节点 while (list2.next) { list2 = list2.next } // 将list2的尾节点连接到end list2.next = end
// 返回新链表 return list1};
复制代码


发布于: 16 分钟前阅读数: 5
用户头像

Lee Chen

关注

还未添加个人签名 2018-08-29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:1669. 合并两个链表,JavaScript,详细注释_Lee Chen_InfoQ写作社区