当前位置: 首页 > 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;
    }
}

 

相关文章:

  • 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)
  • 长春有微信网站一起整的吗/谷歌广告优化
  • 江西网站icp备案注销/汕头百度关键词推广
  • 怎么做单位网站/seo专业论坛
  • 可以做行程的网站/独立站建站平台
  • vps网站打开速度调节/淘宝seo是什么意思
  • 云服务器做网站难吗/台州网络推广