news 2026/2/7 19:46:10

【剑指Offer】026. 重排链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑指Offer】026. 重排链表

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

L0 → L1 → … → Ln-1 → Ln
请将其重新排列后变为:

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

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

/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * public ListNode(int val=0, ListNode next=null) { * this.val = val; * this.next = next; * } * } */ public class Solution { public void ReorderList(ListNode head) { // 思路:将列表中的所有节点添加到栈中,每次插入时就从栈中取出 // 边界条件:head不能为null或者head.next不能为null if (head == null || head.next == null) return; // 将所有的节点压入栈中 Stack<ListNode> nodeStack = new Stack<ListNode>(); // 定义一个peekNode指向栈顶节点 ListNode peekNode = head; while (peekNode != null) { nodeStack.Push(peekNode); peekNode = peekNode.next; } peekNode = nodeStack.Peek(); // 定义一个preNode指向当前的前一个执行了插入的节点,初值为null ListNode preNode = null; // 定义一个nextNode指向下一个需要执行插入的节点,初值为head ListNode nextNode = head; // 临时节点 ListNode tmpNode = null; // 进行一个while循环,循环条件为preNode不能等于栈顶节点或者nextNode不能等于栈顶节点 while ( preNode != peekNode && nextNode != peekNode) { tmpNode = nextNode.next != peekNode ? nextNode.next : null; // 执行插入操作 preNode = nextNode; nextNode.next = peekNode; peekNode.next = tmpNode; nodeStack.Pop(); peekNode = nodeStack.Peek(); nextNode = tmpNode; } // 质空尾部 if(nextNode != null) nextNode.next = null; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 15:25:17

闭包不难懂:前端开发者必须掌握的JavaScript核心技巧(附实战场

闭包不难懂&#xff1a;前端开发者必须掌握的JavaScript核心技巧&#xff08;附实战场闭包不难懂&#xff1a;前端开发者必须掌握的JavaScript核心技巧&#xff08;附实战场景&#xff09;引言&#xff1a;从一个让人困惑的小例子说起闭包到底是什么&#xff1f;别被术语吓到作…

作者头像 李华
网站建设 2026/2/3 6:02:49

震惊!AI已悄悄内化为你的编程伙伴,小白开发者必知的5大生存法则

主要内容 LLM的渗透已进入“内化期”。市场关注点正从单纯的流量规模转向量化的价值创造&#xff08;推理深度、职场渗透率、生态协同&#xff09;。厂商竞争的关键点将在于如何通过提升“逻辑深度”来优化“信息质量”&#xff0c;并在职场及全球化增量市场中实现差异化价值捕…

作者头像 李华
网站建设 2026/2/6 18:18:09

MindSpore动态图静态图融合开发实践

一、引言MindSpore作为昇腾生态下的全场景AI框架&#xff0c;凭借其动态图&#xff08;PyNative&#xff09;与静态图&#xff08;Graph&#xff09;融合的独特优势&#xff0c;既满足了开发者在模型调试阶段对灵活性的需求&#xff0c;又能保障模型部署时的高性能。动态图模式…

作者头像 李华