iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java关于重排链表详细解析
  • 449
分享到

Java关于重排链表详细解析

2024-04-02 19:04:59 449人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

1.题目 给定一个单链表 L 的头节点 head ,单链表 L 表示为:  L0→ L1 → … → Ln-1 → Ln  请将其重新排列后变为: L0 → Ln → L1 → Ln

1.题目

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

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

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

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

 来源:力扣(LeetCode

2.解析

将一个链表分为两个子链表,然后将其归并。

我们要先找到链表的中间节点,在中间节点将其断开

然后反转后半链表

再将两个子链表逐个连起来

 将后半链表反转,独立成一个子链表。

最后将两个子链表的节点逐个连接就OK了

3.代码


class Solution {
    public void reorderList(Listnode head) {
        
        ListNode fast = head;
        ListNode slow = head;
        //找中间节点
        while (fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        //截断链表
        ListNode cur = slow.next;
        slow.next = null;
        //反转后半链表
        ListNode node = null;
        while (cur != null) {
            ListNode curNext = cur.next;
            cur.next = node;
            node = cur;
            cur = curNext;
        }
        //合并
        ListNode prev = head;
        ListNode l1 = node;
        while (l1 != null) {
            ListNode next1 = prev.next;
            ListNode next2 = l1.next;
            prev.next = l1;
            l1.next = next1;
            prev = next1;
            l1 = next2;
        }
        
 
    }
}

到此这篇关于Java关于重排链表详细解析的文章就介绍到这了,更多相关Java 重排链表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java关于重排链表详细解析

本文链接: https://www.lsjlt.com/news/163737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java关于重排链表详细解析
    1.题目 给定一个单链表 L 的头节点 head ,单链表 L 表示为:  L0→ L1 → … → Ln-1 → Ln  请将其重新排列后变为: L0 → Ln → L1 → Ln...
    99+
    2024-04-02
  • STL list链表的用法详细解析
    本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过!0 前言1 定义一个list2 使用li...
    99+
    2022-11-15
    STL 链表
  • Java链表入门(超详细)
    Java链表入门 超详细 什么是链表创建链表1. 创建一个结点2. 插入一个结点-- 头插-- 尾插-- 指定位置插入 3.查找是否包含关键字key是否在单链表当中4.删除元素--删除...
    99+
    2023-09-08
    链表 java 数据结构
  • Java static关键字详细解析
    目录static目的static范围静态(static)修饰静态变量静态方法静态代码块静态类static变量存储在方法区(Method Area)static目的 java中的sta...
    99+
    2024-04-02
  • Java 详细分析四个经典链表面试题
    前言: 上一章更到了链表,虽然知道了什么是链表,链表的结构是怎么样的,但这是远远不够的,我们只清楚了点皮毛,如果让你做题你还是会无从下手,所以我们必须多做题,在做题的过程中慢慢的我们...
    99+
    2024-04-02
  • Java关于List集合去重方案详细介绍
    1 常规去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素。 // 遍历后判断赋给另一个List...
    99+
    2024-04-02
  • 关于 Java 的数据结构链表
    目录数据结构关于 Java 的链表1. 删除链表中等于给定值 val 的所有节点2. 反转一个单链表3. 给定一个带有头结点 head 的非空单链表4. 输入一个链表,输出该链表中倒...
    99+
    2024-04-02
  • 关于java中@Async异步调用详细解析附代码
    目录前言1. @Async讲解2. 用法2.1 同步调用2.2 异步调用3. 自定义线程池前言 异步调用与同步调用 同步调用:顺序执行,通过调用返回结果再次执行下一个调用异步调用:通...
    99+
    2024-04-02
  • Java异常链表throw结构assert详细解读
    目录1、异常的捕获与处理1.1 处理异常1.2 异常处理的流程1.3 throw关键字1.4 异常处理模型1.5 RuntimeException1.6 断言:assert1.7 自...
    99+
    2024-04-02
  • C++带头双向循环链表超详细解析
    目录什么是带头双向循环链表带头双向循环链表常用接口实现上期我们讲完了无头单向非循环链表,这期我们接着来讲链表中结构最复杂的带头双向循环链表! 本期主要内容: 什么是带头双向循环链表...
    99+
    2024-04-02
  • 关于指令重排现象的两个阶段详解
    目录编译期指令重排1、上神秘代码2、编译成Java字节码(没加volatile)3、编译成Java字节码(加了volatile)4、编译器优化运行期指令重排那什么时候会产生指令重排现...
    99+
    2024-04-02
  • Java 详解分析链表的中间节点
    目录1.题目描述2.解法3.复杂度1.题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 题目...
    99+
    2024-04-02
  • Java超详细分析讲解哈希表
    目录哈希表概念哈希函数的构造平均数取中法折叠法保留余数法哈希冲突问题以及解决方法开放地址法再哈希函数法公共溢出区法链式地址法哈希表的填充因子代码实现哈希函数添加数据删除数据判断哈希表...
    99+
    2024-04-02
  • 关于MySQL的ORDERBY排序详解
    目录前言ORDER BY 语法实践出真知实践准备静态排序动态排序总结前言 工作中常常会使用ORDER BY进行排序,了解ORDER BY多种排序方式是非常有必要的。 ORDER BY...
    99+
    2023-05-19
    MySQL 排序 MySQL ORDER BY
  • Java链表超详细讲解(通俗易懂,含源码)
    目录概念链表的分类链表的结构代码实现链表1.创建节点类2.创建链表3.打印链表:public void display()4.查找是否包含关键字key是否在单链表当中:public ...
    99+
    2024-04-02
  • 关于MySQL的ORDER BY排序详解
    目录前言ORDER BY 语法实践出真知实践准备静态排序动态排序总结前言 工作中常常会使用ORDER BY进行排序,了解ORDER BY多种排序方式是非常有必要的。 ORDER BY 排序可以分为静态排序和动态排序,当然...
    99+
    2023-05-12
    MySQL 排序 MySQL ORDER BY
  • JavaScript详细解析之作用域链
    以上就是JavaScript详细解析之作用域链的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-22
    JavaScript 前端
  • 详解C++实现链表的排序算法
    目录一、链表排序二、另外一种链表排序方式三、比较两种排序的效率四、下面通过交换结点实现链表的排序一、链表排序 最简单、直接的方式(直接采用冒泡或者选择排序,而且不是交换结点,只交换数...
    99+
    2024-04-02
  • Java环形链表(图文详解)
    目录 一、判断链表中是否有环 (1)题目描述 (2)题解 二、环形链表的入环节点 (1)题目描述 (2)题解 一、判断链表中是否有环 (1)题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通...
    99+
    2023-09-30
    java 链表 数据结构 算法
  • C++超详细讲解单链表的实现
    目录单链表的实现(从入门到熟练)概念和结构链表的实现增删查改接口节点结构体创建节点开辟数据打印链表尾插数据头删链表数据查找链表pos位置前插数据链表pos位置后插数据链表pos位置数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作