在O(n log n)的时间内 使用常数级空间复杂度 对链表进行排序。

乐扣T148 OJ3:排序链表 c++ 问题描述 : 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 输入范例: 5 -1 5 3 4 0 输出范例: head–>-1–>0–>3–>4–>5–>tail 思路: 1、O(nlogn)的时间复杂 阅读详情

题目描述:

在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。

示例:
在这里插入图片描述

解题思路:

归并排序运用在链表上(由于链表不能索引访问,故快排桶排并不合适),
拆链表使用:快慢指针

里面的几个步骤都是难点:
	1.自底向上思想;
	2.断链
	3.归并
	4.合链

代码:

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode sortList (ListNode head) {
        // write code here
        if (head == null) {
            return null;
        }
        if (head.next == null) {
            return head;
        }
 
        ListNode preSlow = head;
        ListNode slow = head;
        ListNode fast = head;
        while (slow != null && fast != null && fast.next != null) {
            preSlow = slow;
            slow = slow.next;
            fast = fast.next.next;
        }
        ListNode listA = head;
        ListNode listB = slow;
        preSlow.next = null;
        listA = sortList(listA);
        listB = sortList(listB);
        return merge(listA, listB);
    }
 
    private ListNode merge (ListNode listA, ListNode listB) {
        ListNode dummy = new ListNode(0);
        ListNode nodeA = listA;
        ListNode nodeB = listB;
        ListNode nodeR = dummy;
        while (nodeA != null && nodeB != null) {
            if (nodeA.val < nodeB.val) {
                nodeR.next = nodeA;
                nodeA = nodeA.next;
            }
            else {
                nodeR.next = nodeB;
                nodeB = nodeB.next;
            }
            nodeR = nodeR.next;
        }
        if (nodeA != null) {
            nodeR.next = nodeA;
        }
        if (nodeB != null) {
            nodeR.next = nodeB;
        }
        return dummy.next;
    }
}
148. 排序链表 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 快慢指针 找中点//slow:(5个停在3,10个停在5) class Solution { public: ListNode* sortList(ListNode* head) { if(head==NULL||head->next==NULL) return head; // /*快慢指针 查找剧中节点*/ // ListNode* fast=head, *slow=head; // 阅读详情

相关推荐

第十一届全国大学生GIS应用技能大赛——广西区域发展布局示意图

我们需要制作一幅广西区域发展布局示意图,最终成图参考“数据”文件夹中的广西区域发展布局示意图.png。地图使用的投影坐标系是 Asia_North_Albers_Equal_Area_Conic,其中地理坐标系是China_Geodetic_Coordinate_System_2000,中央经线东经 105°,标准纬线是北纬 25°和北纬 47°,出图比例尺 1:4,780,000。

@HNUSTer的博客 7793

leetcode_148. 排序链表

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 解析:对时间空间复杂度有要求,那么就必须思考用什么方法进行排序 对于时间复杂度O...

qq_37292201的博客 330

三运放仪表放大器电路设计全解析:从原理到PCB布局避坑指南

本文深度解析三运放仪表放大器电路设计,从差分放大器原理演进到经典三运放架构,详细阐述了其高共模抑制比(CMRR)和高输入阻抗的核心优势。文章重点剖析了电阻匹配、PCB布局对称性等关键设计要点对性能的影响,并提供了基于LTspice的仿真分析与从原理图到PCB布局、焊接调试的全流程实战避坑指南,助力实现高精度信号调理。

redis7keeper的博客 785

LeetCode——148.排序链表

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 测试样例:[4,2,1,3] 我的回答: /** * Definition...

左耳依然的博客 5187

K型热电偶负电压采集难题?3种运放电路设计方案对比(含Multisim仿真)

本文针对K型热电偶在低温测量中产生的负电压采集难题,详细对比了三种运放电路设计方案,包括双电源运放反相放大、单电源仪表放大器和差分放大电路,并结合Multisim仿真数据分析了各方案的性能差异。文章还提供了PCB布局和抗干扰设计的实战技巧,帮助工程师解决热电偶信号采集中的核心挑战。

postgres8guard的博客 1017

基于Simulink的光储系统黑启动能力仿真

本文基于Simulink平台构建了光储系统黑启动仿真模型,详细阐述了储能VF控制、光伏孤岛MPPT和同步并网等核心控制策略。通过分阶段协调控制(储能启动→关键负载→光伏接入→非关键负载→同步并网),实现了60秒内恢复供电、母线电压波动<5%的性能指标。仿真结果表明,协调控制策略相比无序启动可显著提升系统稳定性,避免电压崩溃和负载跳闸。文章还提供了完整的建模步骤、核心代码及进阶优化方向,为微电网应急供电设计提供了实用参考。该模型适用于光伏储能系统的黑启动能力验证和优化研究。

amy_mhd的博客 106

链表排序居然比数组排序还简单?——leetcode 148 (1)

链表排序居然比数组排序还简单?——leetcode 148 (1) 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 我们...

weixin_43590611的博客 454

python批量调用大模型API:多线程和异步协程

本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。

Cachel Wood的博客 759

[Leetcode] 第148题 排序链表

一、题目描述 在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 二、题目分析 1)采用快排的思想,以第...

weixin_30737363的博客 187

【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板

NPU(Neural Processing Unit) 是专门用于人工神经网络推理与训练的处理器,具备高并行、低功耗、低延迟等特点。它是边缘 AI、自动驾驶、智能摄像头、语音识别等场景中的关键硬件。

moton2017的博客 2247

Transformer 跨界物理建模:探索模拟动态物理系统方法与实践(PINN、流体力学、有限元)

是一个由 Nicholas Zabaras 团队开发的开源项目,托管于 GitHub,旨在将 Transformer 模型(最初在自然语言处理领域大获成功)应用于物理系统的建模与预测。该项目基于论文 ​*“Transformers for Modeling Physical Systems”*​(Neural Networks, 2022),探索了深度学习中的 Transformer 架构如何通过自注意力机制和 Koopman 嵌入来模拟动态物理系统。

源代码杀手的博客 1190

在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。

题目描述 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。 Sort a linked list in O(n log n) time using constant space complexity. /** * Definition for singly-linked list. * class ListNode { * int val; * List...

qq_45564691的博客 983

抖音创作者必备工具!免费一键批量下载无水印视频 + 一键提取抖音视频文案

抖音创作者必备工具!免费一键批量下载无水印视频 + 一键提取抖音视频文案

XiaoqiangClub的博客 3358

LeetCode:在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。

题目描述 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。 Sort a linked list inO(nlogn) time using constant space complexity. 解题思路:用归并排序,链表存储的归并排序 时间复杂度O(nlogn)空间复杂度 O(1) 归并排序的一般步骤为: 1)将待排序数组(链表)取中点并一分为二; 2)...

LeetCode:Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum 661

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

leetcode每日一道(4):在O(n log n)的时间内使用常数级空间复杂度对链表进行排序

题目描述 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。 Sort a linked list in O(n log n) time using constant space complexity. 思路 既然是在常数的空间复杂度,即o(1)的空间复杂度内,那么递归是不能考虑了,这种情况下,只能考虑自底向上的循环方案。 代码就在下面,要注意的几点问题是: 虚拟头结点的使用...

ibelieve8013的博客 1225

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。归并排序,Java实现

/** * 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 */ public class SortList { //排序链表 public static ListNode sortList(ListNode list){ if(list == null || list.next == null){ return list; } //获取中间节点 ListNode mid.

我的梦境传说 747

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

leetcode----在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。

import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @return ListNode类 不带头节点 思路:采用归并排序的方法。其时间复杂度为O(nlog2n) ...

sunnnnh的博客 356

排序:1.在O(n log n)的时间内使用常数级空间复杂度对链表进行排序,归并排序

法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性 复杂性 直接插入排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 稳定 简单 ...

weixin_43548025的博客 445

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ import java.util.LinkedList; import j...

weixin_30532369的博客 1257

leetcode 148:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

用底分治递归方法搞了这道题,感受一下~ /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func sortList(head *ListNode) *ListNode { var linkLen int ...

weixin_30746129的博客 2085

【leetcode】148.链表归并排序C语言实现O(n log n) 时间复杂度和常数级空间复杂度

题目出处 题目要求:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 以下评论来自leetcode @Allen个人感觉受益匪浅,本文在此思路上用C语言实现了对链表的归并排序,并对一些细节做出了补充说明。 bottom-to-up 的归并思路是这样的:先两个两个的 merge,完成一趟后,再 4 个4个的 merge,直到结束。举个简单的例子:[4,3,1,7,8,9,2,11,5,6]. step=1: (3->4)->(1->7)->(8->9

Ms.Lyq的博客 521

leetcode:148. 排序链表(归并排序)

在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 /* 思路:看到O(n log n) 首先想到的是...

pioneer的博客 634

链表排序

在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序。 您在真实的面试中是否遇到过这个题?  Yes 样例 给出 1->3->2->null,给它排序变成 1->2->3->null. import java.util.Scanner; /** * 在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序。 样例 给出 1-

wwe4023的博客 1万+

排序链表

题目描述 在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例1 输入: 4->2->1->3 输出: 1->2->3->4 示例2 输入: -1->5->3->4->0 输出: -1->0->3->4->5 思路 主要考察3个知识点, * 知...

漆灿 138

单链表排序(时间复杂度O(n logn),常数级空间复杂度)

题目描述 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。 Sort a linked list in O(n log n) time using constant space complexity. 分析 这个时间复杂度O(nlogn)一般就是归并排序,然而要使用常数级的空间,那只能在链表上进行排序而不能转成数组排序后再转换成链表了。归并排序核心思想就是递归地对当前数组或链表...

weixin_41613698的博客 3053

排序链表—leecode148

在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 思路1:暴力解决,拿出来,再放回去 /** * Defini...

独行侠 258
上一篇: 对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
下一篇: 用两个栈来实现一个队列
inferno devil
博客等级 码龄9年 54粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值