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

LeetCode 分类刷题:143. 重排链表

题目

给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln - 1 → Ln

请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

解析

前置题目:

LeetCode 分类刷题:876. 链表的中间结点

LeetCode 分类刷题:206. 反转链表

思路:

  1. 找到中间节点
  2. 反转后半段
  3. 同时遍历两段进行链接

答案

我的答案:

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
/*** @param {ListNode} head* @return {void} Do not return anything, modify head in-place instead.*/
var reverseList = function(head) {let pre = null;let cur = head;while(cur) {nxt = cur.next;cur.next = pre;pre = cur;cur = nxt;}return pre;
}
var reorderList = function(head) {// 找到中间节点let slow = head;let fast = head;while(fast && fast.next) {slow = slow.next;fast = fast.next.next;}// 反转后半段let l2 = reverseList(slow);// 同时遍历两段进行链接let l1 = head;while(l2.next) {const nxt1 = l1.next;const nxt2 = l2.next;l1.next = l2;l2.next = nxt1;l1 = nxt1;l2 = nxt2;}
};

灵神答案:

// 876. 链表的中间结点
function middleNode(head) {let slow = head, fast = head;while (fast !== null && fast.next !== null) {slow = slow.next;fast = fast.next.next;}return slow;
}// 206. 反转链表
function reverseList(head) {let pre = null, cur = head;while (cur !== null) {const nxt = cur.next;cur.next = pre;pre = cur;cur = nxt;}return pre;
}var reorderList = function(head) {const mid = middleNode(head);let head2 = reverseList(mid);while (head2.next !== null) {const nxt = head.next;const nxt2 = head2.next;head.next = head2;head2.next = nxt;head = nxt;head2 = nxt2;}
};// 作者:灵茶山艾府
// 链接:https://leetcode.cn/problems/reorder-list/solutions/1999276/mei-xiang-ming-bai-yi-ge-shi-pin-jiang-t-u66q/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度分析

时间复杂度:O(n),其中 n 为链表的长度。

空间复杂度:O(1),仅用到若干额外变量。

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

相关文章:

  • 分布式专题——51 ES 深度分页问题及其解决方案详解
  • 2025.11.10 力扣每日一题
  • 麻城网站开发同一网站相同form id
  • dede网站制作wordpress长微博工具
  • 专业定制铸铁T型槽地轨,提供稳定的制造、实验基准线
  • PyCharm如何像其他idea软件跨行选择文本
  • 【场景题】线上接口响应慢,应该如何排查问题?
  • Product Hunt 每日热榜 | 2025-11-10
  • 【智能体(Agent)技术深度解析】从架构到实现细节,核心是实现“感知环境→处理信息→决策行动→影响环境”的闭环
  • 网站的登陆注册页面怎么做做水果网站弄个什么名字
  • Advisor与@Aspect
  • Java基础——集合进阶6
  • 网站建设湛江分类信息网站如何做排名
  • 二十七、通信接口
  • 个人网站备案条件个人怎么做网页
  • SQL 相关子查询:性能杀手及其优化方法
  • 一文掌握UI自动化测试
  • 金融保险银行营销AI数字化转型培训讲师培训老师唐兴通讲金融银保团队险年金险市场销售
  • 质效飞跃,优测金融数智质效解决方案全新升级!
  • 智网案例精选|光联云网融合智驱,重塑金融数字化转型新格局
  • 自适应网站建设极速建站WordPress更新emoji
  • watch监视-ref对象类型数据
  • 网站建设的英语怎么做淘宝客网站做淘客
  • MBSE:数字模型重塑系统工程未来
  • 排序算法的相关讨论
  • HDFS 之 CacheAdmin
  • MySQL数据库07:分组查询与分类查询
  • 淄博网站公司高端网站建设公司怎么做推广
  • MCU的I/O防护
  • 碳纤维便携式气象站:轻量化设计,随时随地掌握气象数据