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

leetcode148.排序链表

思路源自

【力扣hot100】【LeetCode 148】排序链表|归并排序的应用

仿照归并排序 

先使用一个快慢指针将链表一分为二,然后进行排序归并

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode sortList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        } else {
            ListNode slow = head, fast = head.next;
            while (fast != null && fast.next != null) {
                slow = slow.next;
                fast = fast.next.next;
            }
            ListNode secondPart = slow.next;
            slow.next = null;
            ListNode firstPart = head;
            ListNode sortFirPart = sortList(firstPart);
            ListNode sortSecPart = sortList(secondPart);
            return sortList(sortFirPart, sortSecPart);
        }
    }

    private ListNode sortList(ListNode l1, ListNode l2) {
        ListNode dymmyHead = new ListNode(0, null);
        ListNode cur=dymmyHead;
        while (l1 != null && l2 != null) {
            if (l1.val <= l2.val) {
                cur.next=l1;
                cur=cur.next;
                l1=l1.next;
            } else {
                cur.next=l2;
                cur=cur.next;
                l2=l2.next;
            }
        }
        while (l1 != null) {
            cur.next=l1;
            cur=cur.next;
            l1=l1.next;
        }
        while (l2 != null) {
            cur.next=l2;
            cur=cur.next;
            l2=l2.next;
        }
        return dymmyHead.next;
    }
}

 

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

相关文章:

  • NestJS——创建项目、编写User模块
  • 谷歌浏览器安装Vue开发者工具指南
  • 网络安全中的“后门”:概念、类型、作用与攻防技术
  • 横扫SQL面试——用户留存率问题
  • 【信奥一本通提高篇】基础算法之贪心算法
  • 程序自动化填写网页表单数据
  • 文件分片上传
  • 【Linux】ELF、BIN、PBP、MAP文件查看
  • 基于SpringBoot的失物招领平台(源码+数据库)
  • 基于python大数据的商品数据可视化分析系统
  • 网红酒店|基于java+vue的网红酒店预定系统(源码+数据库+文档)
  • SpringCloud-Nacos
  • 【Sa-Token】学习笔记 01 - SaToken介绍快速上手
  • C语言水仙花续集2
  • 打车APP订单系统逻辑梳理与实现
  • Spring IOC实战:解密Bean的九种诞生方式
  • 消息队列篇--通信协议篇--理解HTTP、TLS和TCP如何协同工作
  • HarmonyOSNext_API16_媒体查询
  • [Python] 贪心算法简单版
  • MySQL-5.7.37安装配置(Windows)
  • 从Web到桌面:深入解析Electron的技术架构与应用实践
  • Node.js 路由 - 初识 Express 中的路由
  • Java面试黄金宝典21
  • 关于ESP系列MCU的UART download原理
  • C# 中 WebSocket 的详细讲解与实现
  • spring 常用注解区别及使用场景
  • vscode通过root远程连接wsl
  • MPU6050模块详解:从原理到STM32驱动指南(上) | 零基础入门STM32第八十九步
  • sqli-labs靶场 less5
  • DSP开发板的JTAG接口