当前位置: 首页 > news >正文

LeetCode 分类刷题:1669. 合并两个链表

题目

给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。

请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。

下图中蓝色边和节点展示了操作后的结果:

请你返回结果链表的头指针。

提示:

  • 3 <= list1.length <= 10^4
  • 1 <= a <= b < list1.length - 1
  • 1 <= list2.length <= 10^4

解析

我的思路:

// 第一次快指针从头走(b-a+2)步
// 第二次快指针继续走a-1步,慢指针从头走a-1步
// 修改快慢指针分别指向链表2的尾和头

官方题解思路:

// 第一次慢指针从头走a-1步
// 让快指针指向慢指针的位置,再走(b-a+2)步
// 慢指针的next指向list2(头节点)
// list2移动到链表2的尾节点
// 快指针的next指向list2(尾节点)

对比可以发现官方题解有几处巧思,比如:直接让快指针指向慢指针再走(b-a+2)步;确定快慢指针的位置后,先让慢指针的下个节点链接上链表2,再将链表2的头指针用于移动,寻找尾节点,避免了创建新的指针变量。

答案

我的答案:

/*** 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) {// 第一次快指针走(b-a+2)步// 第二次快指针走a-1步,慢指针走a-1步// 修改快慢指针分别指向链表2的尾和头let slow = list1;let fast = list1;for(let i = 0; i < b - a + 2; i++) {fast = fast.next;}for(let i = 0; i < a - 1; i++) {fast = fast.next;slow = slow.next;}let tail2 = list2;while(tail2.next) {tail2 = tail2.next;}slow.next = list2;tail2.next = fast;return list1;
};

官方题解:

var mergeInBetween = function(list1, a, b, list2) {let preA = list1;for (let i = 0; i < a - 1; i++) {preA = preA.next;}let preB = preA;for (let i = 0; i < b - a + 2; i++) {preB = preB.next;}preA.next = list2;while (list2.next) {list2 = list2.next;}list2.next = preB;return list1;
};// 作者:力扣官方题解
// 链接:https://leetcode.cn/problems/merge-in-between-linked-lists/solutions/2079499/he-bing-liang-ge-lian-biao-by-leetcode-s-alt8/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度分析

时间复杂度:O(n+m),其中 n 是 list1​ 的长度,m 是 list2​ 的长度。

空间复杂度:O(1)

我觉得时间复杂度是O(b + m),但是官方题解给的是O(n+m)?

  • O(b + m):强调操作与b的直接关系。
  • O(n + m):强调最坏情况下与链表1长度的关系。

更规范的表述是O(n + m),因为算法分析通常以输入规模的完整上限为准。

http://www.dtcms.com/a/618863.html

相关文章:

  • 什么是JMeter?如何用JMeter做性能测试?
  • 高端装饰公司网站设计昆山网站建设首页
  • 河南省住房和城乡建设部网站首页郑州网站关键词优化外包
  • spring学习笔记之注解开发
  • 中药饮片批发商是什么?其在中药供应链中的意义和作用是什么?
  • 鲜花销售|花店销售|基于java+vue的鲜花销售系统设计与实现(源码+数据库+文档)
  • 什么是h5网站如何在服务器里建设网站
  • 最便宜的低价机票网站建设附近临时工500元一天
  • SHA-256的初始哈希值是怎么规定的?
  • 做视频添加字幕的网站wordpress 获取导航栏
  • 建立网站数据库实验报告徐州设计公司有哪些
  • 专业网站公司本地佛山企业网站建设
  • 网页设计模板素材网站做一个招聘信息的网站 用什么做网站的软件
  • 【Spring Boot】基于MyBatis的条件分页
  • LVS负载均衡群集(二)-- DR模式
  • 做刷题网站赚钱么口碑好的聊城网站建设
  • 外贸网站怎么做关键词网络设计与实施
  • 【Linux驱动开发】Linux 设备驱动中的异步通知与异步 I/O:原理、机制与实战
  • 汕头网站建设报价云南省建设交易中心网站
  • 【QT笔记】常用控件——QWidget 核⼼属性
  • 学校网站怎么建设视频湖南网站建设公司 地址磐石网络
  • 【MySQL】基础
  • 怎么做个手机版的网站吗成全视频免费高清观看在线动漫电影
  • 模仿 网站西宁做网站需要多少钱
  • PHP代码审计框架性思维的建立
  • 惠州个人做网站联系人安卓开发自学教程
  • ASC学习笔记0026:链接动画实例标签
  • termux脚本熄屏后自动杀掉抖音进程
  • 徐州企业网站推广请人做网站买断域名
  • 锦州网站制作公司关于网站项目建设的申请