首页
比赛
tracker
题库
课程
竞赛讨论区
登录
/
注册
去牛客
首页
>
重排链表
152条解析
开通博客写题解
Maokt
发表于 2021-07-05 09:55:12
算法思想一:数组 解题思路: 因为链表不支持下标访问,所以我们无法随机访问链表中任意位置的元素。 因此比较容易想到的一个方法是,我们利用线性表存储该链表,然后利用线性表可以下标访问的特点,直接按顺序访问指定元素,重建该链表即可。 算法步骤: 1、初始化空数组res,遍历链表将
展开全文
幸福的火龙果在干饭
发表于 2021-07-09 21:53:46
一、题目描述 NC2重排链表题目大意:将给定的单链表 a0 -> a1 -> ... -> an-1 -> an,重新排序为a0 -> an -> a1 -> an-1 -> ...注意审题:要求使用原地算法,即节点内部的值不允许改变,需要对实际的节点
展开全文
牛一霸
发表于 2021-07-03 19:06:10
题目:重排链表 描述:将给定的单链表 L:L0→L1→…→Ln−1→Ln重新排序为:L0→Ln→L1→Ln−1→L2→Ln−2→…L_0→L_n要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。 示例1:输入:{1,2,3,4},返回值:{1,4,2,3}
展开全文
Peterliang
发表于 2021-07-15 18:21:13
题意分析 给出一个链表,需要我们对这个链表进行重新排列,交错取出原来的链表最前面没有被取过的和最后面没有被取过的结点,新的链表就是按照这个取出的顺序重新拼接而成的一个链表。 样例解释 思路分析 题目的意思是给我们一个链表的头结点,需要我们不能改变结点内部的值,只能改变结点的next指针。这样
展开全文
leaves0924
发表于 2021-07-08 14:02:17
题目描述 将给定的单链表L: L_0→L_1→…→L_{n-1}→L_n重新排序为:L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。示例1输入:{1,2,3,4}返回值:{1,4,2,3}说明:给定head链表1
展开全文
LaN666
发表于 2020-11-22 17:07:05
解法一 线性表 我们都知道链表的缺点是查询效率低,每一次都需要从头开始遍历。所以如果按照题目的要求组成新链表,要去得到最后一个节点,就得从头将链表遍历一次,这样反复操作,直到将原来的链表改变到题目要求的链表。这样很明显是非常耗时间的。、 由于有了上面的分析,直到了这一缺点,我们就可以想到与链表齐
展开全文
Foreordination
发表于 2021-09-06 17:40:22
1、双指针算法 import java.util.*; public class Solution { public void reorderList(ListNode head) { if (head == null || head.next == null) return
展开全文
夏发财
发表于 2021-09-25 16:59:00
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; *
展开全文
巨人的肩膀
发表于 2019-08-24 10:24:43
class Solution { public: void reorderList(ListNode *head) { if (head == NULL || head->next == NULL || head->next->next == NULL)
展开全文
程序员学长
发表于 2021-11-02 14:14:43
更多题解,请关注公众号:程序员学长,让你进大厂不走弯路 重排链表 问题描述 LeetCode 143. 重排链表 给定一个单链表 L 的头节点head ,单链表 L 表示为:L0 -> L1 -> ... -> Ln-1 -> Ln,将其重新排列后变成 L0 -> Ln
展开全文
小陆要懂云
发表于 2021-08-13 20:30:02
if (head == NULL || head->next == NULL || head->next->next == NULL) return; vector<ListNode *> v; while(hea
展开全文
独饮心上秋要实习
发表于 2022-01-26 15:10:37
* struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ /** * * @param head ListNode类 * @return v
展开全文
idealthm
发表于 2021-10-11 21:46:28
思路其实挺简单的. 我们需要将头结点率先链接至尾节点.并且为了可持续性地将tail = tail -> pre. 在O(1)空间的情况下,使用递归是最好的选择. 使用一个全局变量保存为当前链的起始头部.而递归则是最先处理最尾部的节点 //这里我们只考虑最后一个节点5,是如何被放入头结点的. /
展开全文
LifelongCode
发表于 2021-01-06 22:35:32
- 解法1:划分+逆序+拼接;- 解法2:线性表; 解法1:划分+逆序+拼接 eg: 1->2->3->4->5->6 第一步:将链表分为两个链表 1->2->3 4->5->6 第二步:将第二个链表逆序 1->2->3
展开全文
好好刷题进大厂
发表于 2021-11-15 16:34:13
找到中间点,分割前后两段A、B,B进行翻转,再合并AB 时间复杂度:O(n),空间复杂度:O(1) 关于如何找中点的通用公式可以看我这篇的题解 https://blog.nowcoder.net/n/0dda181dcdbd457b9e1bfc86e797d19e /
展开全文
查看本题
查看本题讨论
等你来战
查看全部
牛客小白月赛133
报名截止时间:2026-05-29 21:00
第二十三届宁波大学程序设计竞赛(同步赛)
报名截止时间:2026-05-30 17:30
第九届广西大学生程序设计大赛暨2026邀请赛(热身赛)
报名截止时间:2026-05-27 01:00
第九届广西大学生程序设计大赛暨2026邀请赛
报名截止时间:2026-05-27 01:00
牛客周赛 Round 146
报名截止时间:2026-05-31 21:00
牛客2026年儿童节比赛
报名截止时间:2026-06-01 21:00
牛客练习赛154
报名截止时间:2026-06-05 21:30
汤圆头 Round 1
报名截止时间:2026-07-06 22:00
2026牛客暑期多校训练营1
报名截止时间:2026-07-17 17:00
扫描二维码,关注牛客
意见反馈
下载牛客APP,随时随地刷题