顺序遍历:求解《1669. 合并两个链表》

2022-05-01 20:15:08
顺序遍历,求解《1669. 合并两个链表》

力扣 1669. 合并两个链表 的操作示意图

合并链表

你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。
请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。
下图中蓝色边和节点展示了操作后的结果如上图。
请你返回结果链表的头指针。

答案

顺序遍历

var mergeInBetween = function(list1, a, b, list2) {
  let r = new ListNode(null, list1), i = 0
  while (++i < a) list1 = list1.next
  let next1 = list1.next
  list1.next = list2
  while (i++ <= b) next1 = next1.next
  while (list2.next) list2 = list2.next
  list2.next = next1
  return r.next
};
func mergeInBetween(list1 *ListNode, a int, b int, list2 *ListNode) *ListNode {
  r, i := &ListNode{Val: 0, Next: list1}, 0
  for i < a - 1 {
    list1 = list1.Next
    i++
  }
  next1 := list1.Next
  list1.Next = list2
  for i < b {
    next1 = next1.Next
    i++
  }
  for list2.Next != nil {
    list2 = list2.Next
  }
  list2.Next = next1
  return r.Next
}
class Solution {
  function mergeInBetween($list1, $a, $b, $list2) {
    $r = new ListNode(null, $list1);
    $i = 0;
    while (++$i < $a) $list1 = $list1->next;
    $next1 = $list1->next;
    $list1->next = $list2;
    while ($i++ <= $b) $next1 = $next1->next;
    while ($list2->next) $list2 = $list2->next;
    $list2->next = $next1;
    return $r->next;
  }
}

递归和双指针迭代:求解《21. 合并两个有序链表》和《剑指 Offer 25. 合并两个排序的链表》
递归和双指针迭代,求解《21. 合并两个有序链表》和《剑指 Offer 25. 合并两个排序的链表》
杨辉三角:性质和代码,求解《118. 杨辉三角》《119. 杨辉三角 II》和《2221. 数组的三角和》
什么是杨辉三角,杨辉三角的性质,求解《118. 杨辉三角》《119. 杨辉三角 II》和《2221. 数组的三角和》
旋转字符串:队列、顺序遍历和匹配字符串答案
用队列、顺序遍历模拟,用匹配子字符串求解旋转字符串。