【力扣】重排链表

一、题目描述

题目链接: . - 力扣(LeetCode)

二、解题思路

  1. 找到链表的中间节点,将链表分为两部分(可使用快慢双指针)
  2. 将后半部分链表逆序(双指针或头插法)
  3. 合并两个链表

一定要注意给分开之后的两个链表的末尾节点 .next 置为 null,否则会出错(超出时间限制)!

三、代码

class Solution {
    public void reorderList(ListNode head) {
        if(head == null || head.next == null || head.next.next == null) {
            return;
        }
        //1、找到链表的中间节点
        ListNode slow = head, fast = head;
        while(fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        //此时slow所指即为中间节点
        //将原始链表分为两个链表,要注意给分开之后的两个链表的末尾节点.next置为空
        //2、逆序slow之后的部分(双指针)
        ListNode prev = slow.next;
        slow.next = null;
        ListNode cur = prev.next;
        prev.next = null;
        while(cur != null) {
            ListNode next = cur.next;
            cur.next = prev;
            prev = cur;
            cur = next;
        }
        //逆序之后,prev指向逆序后链表的首节点
        //3、合并两个链表
        ListNode cur1 = head, cur2 = prev;
        ListNode ret = new ListNode(0);
        ListNode ccur = ret;
        while(cur1 != null) {
            ccur.next = cur1;
            ccur = cur1;
            cur1 = cur1.next;
            if(cur2 != null) {
                ccur.next = cur2;
                ccur = cur2;
                cur2 = cur2.next;
            }
        }
    }
}

相关推荐

  1. 】143. 重排

    2024-07-16 23:56:04       29 阅读
  2. 相交-

    2024-07-16 23:56:04       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 23:56:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 23:56:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 23:56:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 23:56:04       69 阅读

热门阅读

  1. Android系统中Launcher应用是被谁启动的

    2024-07-16 23:56:04       19 阅读
  2. 智能家居的四种无线技术

    2024-07-16 23:56:04       23 阅读
  3. 定时任务类:使用@Scheduled注解设计定时任务

    2024-07-16 23:56:04       18 阅读
  4. python 语法学习 day 7

    2024-07-16 23:56:04       25 阅读
  5. 搜维尔科技:Varjo XR-4开箱测评,里面都有啥?

    2024-07-16 23:56:04       15 阅读
  6. 开放开源开先河(一)

    2024-07-16 23:56:04       20 阅读
  7. 动态规划算法专题四--两个数组dp问题

    2024-07-16 23:56:04       19 阅读
  8. 如何检查对象中键是否存在?

    2024-07-16 23:56:04       22 阅读