Merge In Between Linked Lists

MediumLinked List

Solution

import { ListNode } from '@algorithm/lib';
 
export function mergeInBetween(
  list1: ListNode | null,
  a: number,
  b: number,
  list2: ListNode | null,
): ListNode | null {
  if (list1 === null || list2 === null) {
    return null;
  }
 
  let i = 0;
  let startNode = new ListNode();
  let endNode = list1;
  while (endNode.next !== null && i < b) {
    if (i === a - 1) {
      startNode = endNode;
    }
    endNode = endNode.next;
    i += 1;
  }
  startNode.next = list2;
 
  let currentNode = list2;
  while (currentNode.next !== null) {
    currentNode = currentNode.next;
  }
  currentNode.next = endNode.next;
 
  return list1;
}