LeetCode148 Sort List

CoppeliaSim(原V-REP)新手上路 CoppeliaSim(原V-REP)是一个机器人仿真平台,里面有很多来自别的公司的机器人模型以及完备的物理引擎,我们可以通过python,c++,matlab等语言控制里面的机器人。,您也可以在官网中Downloads里找您需要的版本,一般只需要下载EDU版本就可以了,我下载的是v4.1.0 windows EDU版本。在版本V4之前,CoppeliaSim叫V-REP,在官网可以下载到之前的V-REP版本。 阅读详情
题目链接:

https://leetcode.com/problems/sort-list/

题目大意:

给一个无序链表排序,要求时间复杂度O(n log n),空间复杂度O(1)。

分析:

最开始看到空间复杂度为常数,第一反应是堆排序。然而并不行,堆排序是基于数组的吧,然后是快排,但是快排掌握的并不好,而且想了一下归并排序如果是用链表的话,其实是可以避免空间复杂度为O(n)的情况的。
里面还涉及一个小算法吧,就是找链表的中点,可以用两个指针,low与high,一个步长为1一个步长为2,当high->next为空或high->next->next为空时,此时low在中点位置。

最近在学数据结构,刚刚学完排序,练下排序的题,顺便加深对链表的影响。主要是有个师兄说我学数据结构就是在背代码,根本不会灵活运用……QAQ好伤感,我自己觉得不是这样的啊,但是既然有人这样说了,我还是多练练LeetCode上的题吧。嗯,这道题确实是道好题,加深了我对链表和归并排序的理解,诶~~~指针指来指去还是有点晕,第一次写MSort函数的时候,传参传的不是指针的引用,链表老是丢结点。关于指针还是要多思考,在脑袋里多指过去指过来几次,慢慢就不晕了。

代码:
class Solution {
public:
    void Merge_Sort(ListNode* &L,ListNode* R){
    ListNode* pHead = (ListNode*)malloc(sizeof(ListNode));
    pHead->next = L;
    ListNode* ptrL = L;
    ListNode* ptrR = R;
    ListNode* pre = pHead;

    while (ptrL!=NULL&& ptrR!=NULL)
    {
        if (ptrL->val <= ptrR->val)
        {
            pre = ptrL;
            ptrL = ptrL->next;
        }
        else
        {
            ListNode* tmp = ptrR->next;
            pre->next = ptrR;
            ptrR->next = ptrL;
            ptrR = tmp;
            pre = pre->next;
        }
    }
    if (ptrR!= NULL)
    {
        pre->next = ptrR;
    }
    L = pHead->next;
}
void MSort(ListNode* &List){
    if (List == NULL || List->next==NULL)
    {
        return;
    }
    ListNode* low=List;
    ListNode* high=List;
    ListNode* pre = NULL;
    ListNode* newList = NULL;
    while (high->next != NULL && high->next->next!=NULL)
    {
        pre = low;
        low = low->next;
        high = high->next->next;
    }
    newList = low->next;
    low->next = NULL;
    MSort(List);
    MSort(newList);
    Merge_Sort(List,newList);

}
    ListNode* sortList(ListNode* head) {
        MSort(head);
        return head;
    }
};
5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO如何选? 本文深度解析了GelSight、DIGIT、Taxim、GelSlim和TACTO五款主流触觉传感器的技术原理与核心特性。通过对比视觉传感与电学传感两大技术路径,为机器人灵巧抓取、精密检测等应用场景提供清晰的选型决策指南,帮助开发者根据项目需求在分辨率、响应速度、集成度与成本之间找到最佳平衡。 阅读详情

相关推荐

基于价值的深度强化学习:DQN

本文主要是介绍DQN原理和算法伪代码和代码实现,算法实现包括pytorch版本和stable-baselines3版本

溯源的专栏 1083

LeetCode 148:Sort List

Sort a linked list in O(n log n) time using constant space complexity. //题目要求:对链表进行排序 //解题思路:归并排序,再Merge //归并排序的基本思想是:找到链表的中间节点,然后递归对前半部分和后半部分分别进行归并排序,最后对两个排好序的链表进行Merge class Solution { public:

henryzhihua 3万+

ESP32IDF 通过 PCA9685控制舵机的程序bug处理

esp32 PCA9685 bug 舵机

ztvzbj的博客 725

leetcode 148. Sort List

【代码】leetcode 148. Sort List。

weixin_41554427的博客 916

从 0 到 1 构建 Graph RAG 系统:本地图谱 + 通义千问落地实践

本文介绍了一个基于知识图谱的检索增强生成系统(Graph RAG),该系统结合领域知识图谱、语义检索和大模型问答,旨在提供结构化、精准的技术问答服务。文章详细说明了项目背景、目标、核心技术架构以及实现方法,包括本地图谱构建、Neo4j数据库接入、语义检索和大模型集成等关键环节。该系统支持混合检索、多轮问答和知识图谱关联理解,能够有效减少大模型幻觉,提升问答的准确性和可解释性。文中还展示了核心代码结构和流程图,呈现了从文档加载到图谱构建再到问答生成的完整流程。该系统适用于需要处理复杂领域知识的研发和数据分析场

m0_58378112的博客 1399

别再死记硬背注意力机制了!用Python+PyTorch从零实现一个HAN(Hierarchical Attention Network)

本文详细介绍了如何使用Python和PyTorch从零实现Hierarchical Attention Network(HAN),通过代码级解析帮助读者深入理解层次注意力机制。文章涵盖词级和句子级注意力层的构建、完整HAN架构的实现、训练技巧及注意力可视化方法,特别适合希望掌握高级NLP技术的开发者。

weixin_28744423的博客 161

Leetcode 148 Sort List

Leetcode 148 Sort List题目思路代码 题目 Given the head of a linked list, return the list after sorting it in ascending order. Follow up: Can you sort the linked list in O(n logn) time and O(1) memory (i.e. constant space)? Example 1: Input: head = [4,2,1,3] Outpu

weixin_43796689的博客 148

C#与西门子PLC S7-1500 S7协议PLC读写数据

/获取对应长度的字符串。//将val字符串转换为字符数组。//String写入。//String读取。//PLC类型 IP地址 机架号 槽号。1.类库使用S7netplus。

softshow1026的博客 5576

LeetCode 148 Sort List

LeetCode 148 Sort List 排序, 我使用了三种排序: 手写快排: 48ms C++模板快排: 48ms 堆排序:52ms c++: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; ...

weixin_30699831的博客 75

【Ultrascale+ MPSOC学习记录】10、PS端以太网使用lwip

还是参考ALINX教程,学习PS端以太网如何使用,从教程中可以看到,开发板使用了一个xilinx默认不支持的phy JL2121,所以需要修改lwip的库源码。

ryo891012的博客 880

081、LLC谐振变换器的短路特性与保护

本文深入分析了LLC谐振变换器在短路工况下的特性与保护策略。作者通过实际案例指出,LLC在输出短路时会出现谐振电流失控、ZVS条件丧失等危险现象,导致MOS管炸毁。文章详细阐述了短路保护的三大难点:响应速度、频率与电流的耦合、重启策略,并提出了硬件级快速保护、频率快速拉升、打嗝模式等实用解决方案。作者分享了关键参数设计经验,包括电流检测阈值设置、最高频率限制和保护响应时间控制,并通过实测波形验证了保护效果。最后总结出五点重要经验,强调硬件保护的必要性和系统设计的注意事项,为LLC变换器的短路保护设计提供了有

Jack010169的博客 75

[Leetcode]_148 Sort List

/** * Index: 148 * Title: Sort List * Author: ltree98 **/ 题意 将给定的链表排序,要求时间复杂度 O(nlogn) 空间复杂度O(1) 我的 思路 时间复杂度为O(nlogn)的排序,主流的也就快排和归并,但是归并空间复杂度不合格,所以就是快排。 此题麻烦点在于,这是一个链表,不像数组,可以直接高位低位。 但是,通过快慢...

继续激情,继续奋斗。 338

华为od 面试八股文_C语言_02_含答案

华为od 面试八股文_C语言_02_含答案

MISAYAONE的博客 2230

Leetcode148. Sort List

在O(nlogn)时间复杂度内排序一个有序链表

magic_jiayu的博客 227

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LeetCode(148)Sort List

题目如下: Sort a linked list in O(n log n) time using constant space complexity. 分析如下: 能够有O(n lgn)时间复杂度的算法为,快速排序,堆排序,归并排序,三者的空间复杂度分别为O(1), O(N),O(N) 所以一开始,我想着用快速排序的方法来解决,但是发现代码很难写出来。于是网上看了一下提示,发现其实方

BUILD 6260

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

leetcode148 Sort List

leetcode148 Sort List 题目内容 算法分析相对于时间复杂度为O(nlogn)的排序算法,有快速排序和归并排序。这里采用的是归并排序。思路大致如下: 归并排序的大致思想就是,将链表分成两段,然后通过递归划分,对链表的前半部分和后半部分进行排序后再进行归并排序,最后对排好序的链表进行合并。难点之一是将链表划分成两段,采用的是fastslow.两个指针,一个指针走两步,另一个指针走一

RheaWang的博客 510

jre9下载 jdk9

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

Leetcode 148. Sort List python

Leetcode 148. Sort List题目解法1:利用最小堆解法2:利用归并排序的思想 题目 Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4->2->1->3 Output: 1->2->3->4 Example 2: I...

qq_37821701的博客 510

【Leetcode】148. Sort List

题目地址: https://leetcode.com/problems/sort-list/ 对一个链表排序。可以使用归并排序。 public class Solution { public ListNode sortList(ListNode head) { if (head == null) { return null; } ...

数学、算法爱好者的博客 304

【LEETCODE】148- Sort List [Python]

Sort a linked list in O(n log n) time using constant space complexity. 题意: 对一个链表排序,O(n log n) time , constant space complexity 思路: 根据题意对时间和空间复杂度的要求,此处排序用归并 参考: 归并排序: http://blog.csd

aliceyangxi1987的博客 2006

LeetCode148——Sort List——merge sort

这道题的题面非常简单,就是简单的对一个乱序的链表进行排序。 以往做的排序问题很多,但是大多数都是在数组中进行排序的。关于链表的排序做的比较少,这里专门开一贴来记录链表中的排序算法。注意这里所说的面向链表的排序算法特指game of pointers,也就是说这里不考虑有些人把数字取到vector里再sort一下放回链表的讨巧做法。 一、插入排序 这是我首先想到的算法,而且它确实非常适合链表这种数据结构。 插入排序需要保留一个有序区,所以这里我用了[Head, Tail]这个区间来指出有序区域的范围,那么我

zheyuan的博客 338

LeetCode 148. Sort List 题解

本题是归并排序的经典应用问题,主要考察对归并排序思想的理解和使用。通过使用归并排序,我们可以高效地对链表进行排序。归并排序的核心思想是:找到链表的中点,将链表分成两部分,递归地对两部分进行排序,然后将排序后的两部分合并。这种方法不仅适用于排序链表问题,还可以应用于许多其他需要排序的问题。掌握归并排序的思想,对于解决这类问题非常重要。

cannonjinx的博客 4078

LeetCode-148. Sort List [C++][Java]

Given theheadof a linked list, returnthe list after sorting it inascending order.

贫道绝缘子的博客 259

LeetCode 148. Sort List

题目描述:完成链表的排序,在nlogn时间复杂度内,且只用常数空间。 题目链接:148. Sort List 这题思路要求要用nlogn的时间复杂度的算法去完成这个操作,其实选择也就那么多: 1、快排 2、堆排 3、归并排序 在数组上完成这三个操作其实都不太难,但在链表上有一定难度。快排要找到pivot然后比较交换,双向链表比较合适,堆排要放到数组建堆,不满足。归并排序,在数组的情况下需要建...

Za七杂⑧ 169

[Leetcode][Python] 148. Sort List 排序链表

[Leetcode][Python] 148. Sort List 排序链表题目大意解题思路 1:归并排序代码解题思路 2:借助列表和sort()代码 题目大意 题目连接: Given the head of a linked list, return the list after sorting it in ascending order. Follow up: Can you sort the linked list in O(n logn) time and O(1) memory (i.e. con

TwinkleZhao的博客 422

[leetcode] 148. Sort List

Description Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4->2->1->3 Output: 1->2->3->4 Example 2: Input: -1->5->3->4->0 Out...

Learning from the mistakes 275
上一篇: poj 1129 Channel Allocation
下一篇: LeetCode143 Reorder List
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值