[牛客经典必刷算法题] LC4-链表排序

西门子828D/840DSL数控机床产量数据采集实战:一个C#程序员的踩坑与填坑记录 本文详细记录了C#程序员在西门子828D/840DSL数控机床产量数据采集实战中的经验与教训。从硬件连接到软件配置,再到数据读取与异常处理,文章分享了工业现场编程的特殊挑战和解决方案,特别是针对数控系统的TCP/IP通信、PLC变量地址映射及数据解析等关键技术点。 阅读详情

[牛客经典必刷算法题] LC4-链表排序

本题链接

题目描述

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

示例

输入
{30,20,40}
 
返回值
{20,30,40}

思路

题目要求复杂度为O(nlogn), 故可以考虑归并排序的思想。

归并排序算法描述:

  • 步骤一:将待排序数组(链表)取中点并一分为二;
  • 步骤二:递归地对左半部分和右半部分进行归并排序;
  • 步骤三:将两个部分进行合并(merge),得到结果。

解答

import java.util.*;

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

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode sortList (ListNode head) {
        if(head == null || head.next == null) return head;
        
        // 快慢指针,slow到达中间,fast到达末尾
        ListNode slow = head, fast = head.next;
        while(fast != null && fast.next != null){
            slow = slow.next;
            fast = fast.next.next;
        }
        
        ListNode right = sortList(slow.next);
        slow.next = null;
        ListNode left = sortList(head);
        return merge(left, right);
    }
    
    ListNode merge(ListNode left, ListNode right){
        if(left == null) return right;
        if(right == null) return left;
        
        ListNode dummy = new ListNode(0);
        ListNode head = dummy;
        
        while(left != null && right != null){
            if(left.val > right.val){
                head.next = right;
                right = right.next;
            }
            else {
                head.next = left;
                left = left.next;
            }
            head = head.next;
        }
        if(left != null) head.next = left;
        if(right != null) head.next = right;
        return dummy.next;
    }
}
生存网络与mlr3proba 通过结合生存网络和mlr3proba,可以使用生存网络模型来预测个体在给定时间点发生事件的概率,并使用mlr3proba提供的工具进行模型的训练、评估和选择最佳模型。iii)基本的机器学习(ML)方法,如重新排序和调整。在本文中,我们将只讨论前五种,因为它们在文献中得到了更好的建立,并且它们具有相同的接口,这简化了调优,我们将在下面看到。我们不会为模型指定自定义架构,而是使用默认架构,如果你熟悉PyTorch,那么你可以选择创建自己的架构,如果你愿意的话,通过将其传递给模型中的custom_net参数。 阅读详情

相关推荐

告别深度学习!用5个麦克风搞定多说话人分离:ReTM算法保姆级教程

本文详细介绍了ReTM算法,这是一种无需深度学习、仅需5个麦克风即可实现多说话人语音分离的创新信号处理方法。它通过估计相对传递矩阵,利用空间物理信息在混响环境中分离语音,具有数据需求低、计算复杂度小、无需先验几何信息等优势,特别适合嵌入式设备和资源受限场景。

desk3的博客 156

【算法专题】链表排序算法总结

链表排序算法总结 概述 问题描述:给定一个链表,请将这个链表升序排列。 节点定义: struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 1 链表插入排序 题目描述:Leetcode 0147 链表进行插入排序 分析 因为头结点可能会改变,因此需要设置一个虚拟头结点dummy。 我们从前向后遍历整个链表,假设当前考察节点为p,我们需要从

weixin_42638946的博客 8927

【板栗糖GIS】新装ArcGIS必调的12个隐藏设置——【效率翻倍指南】

本文详细介绍了新装ArcGIS后必调的12个隐藏设置,涵盖性能优化、路径管理、显示调校、工作流定制等方面,帮助用户显著提升GIS工作效率。从关闭后台地理处理到启用硬件加速,再到个性化快捷键配置,这些实用技巧能让ArcGIS运行更流畅,操作更便捷。

weixin_42524945的博客 543

算法篇:链表之排序

算法:对于链表的排序,一般要设计到拆分合并两步,拆分这一步:中间节点作为临界值,小的放左边,大的放右边 合并操作步骤:将两个有序的链表中,串联起来 题目1:分隔链表https://lee...

zhghost的专栏 709

从零开始:手把手教你理解UBOOT的BL0、BL1、BL2启动流程

本文详细解析了嵌入式系统中UBOOT启动流程的核心三阶段:BL0、BL1和BL2。BL0作为芯片固化的ROM代码,负责最基础的硬件初始化和加载BL1;BL1(SPL)作为二级程序加载器,在SRAM中运行并初始化DRAM,为加载BL2铺路;BL2则是完整的UBOOT主体,运行于DRAM,负责最终的外设初始化和操作系统引导。文章通过代码示例和流程图,手把手教你理解从芯片上电到系统就绪的完整接力过程。

qsc901234567的博客 1142

量子磁场测量技术在生物磁场成像领域的应用现状与产业趋势

首先对量子磁场测量技术的发展进行了简述,然后介绍了量子磁场测量技术在生物磁场成像领域的应用,最后分析了量子磁场测量技术的两大重要应用方向(心磁图仪和脑磁图仪)及其产业现状和未来发展趋势。美国普林斯顿大学在《自然》上公布了目前人类磁场测量灵敏度最高的基于量子磁场测量技术的零场原子磁力计。拥有巨大的发展潜力及庞大的市场空间。因此其数千万元的高昂售价及每年数百万元的超导维护成本限制了超导式心磁图仪的发展和临床应用。而基于超导式脑磁图仪的癫痫、阿尔兹海默症、抑郁症等脑疾病患者的临床研究也取得丰富的研究成果。

罗伯特技术屋 1528

LC4. 寻找两个有序数组的中位数

题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4]...

Find me 288

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

【AI工具】免费获取各类AI大模型APIKEY的使用教程,以硅基流动+Deepseek为例

funfan的博客 4261

4. 寻找两个有序数组的中位数

归并排序的扩展 class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m = nums1.size(); int n = nums2.size(); int...

姚军 219

AI Agent Harness与SCADA系统集成

简单来说,AI Agent Harness是Industrial AI Agent的“中央调度室+装备库+知识库+安全网”把不同技术栈、不同部署环境(云/边/端)、不同功能(感知、推理、决策、执行、验证)的“零散Agent”组装成具备特定工业场景能力的Agent Team(如聚合反应根因诊断Agent Team);管理Agent Team的生命周期(创建、初始化、调度、监控、销毁);提供统一的工业多工具调用接口(对接SCADA、MES、PLC、DCS、巡检机器人、数字孪生平台等);内置。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 354

Allegro如何进行四层板板层设计

板层的设计

weixin_42499230的博客 3189

面试算法题-单链表的快速排序实现

面试时被问到单链表快速排序的问题,回来仔细实现下,面试时细节没有处理好只说出来一些思想。本人菜鸟请大家指教。 #include using namespace std; typedef struct linklist { int key; linklist *next; }*listPoint; void QuickSort(linklist *head,linkli

huruzun的专栏 2470

《四》:LBE,VR 大空间系列——Pico的空间扫描方式

(这里有个选项叫高精度扫描模式,这个功能在下方详细补充)系统会根据绘制的顶点,将区域分割成若干个4X4米的小方格,我们只需要根据提示,首先进入一个方格子空间内部,然后依次凝视每个区域上下左右前后六个面的小方格组,每一面4个,直至全部消失, 消失后地面会出现一个方形行走路径,我们沿着边缘正或反走一圈即可,完成后此块区域即自动消失。不过由于pico有一个高精度扫描圈,如图加粗的圆环,这个圆环的意思是在在内部的区域扫描精度较高,越远离原点的区域误差越大,所以为了更有效的利用,建议原点设置在场地中心区域。

unitygroup的博客 2880

[牛客经典必刷算法题] LC5-链表的插入排序

牛客经典笔刷算法题-LC5-链表的插入排序题目描述示例思路解答 本题链接 题目描述 使用插入排序对链表进行排序。 示例 输入 {30,20,40} 返回值 {20,30,40} 思路 通过虚拟头节点处理链表排序 插入排序算法描述: 步骤一:从第一个元素开始,该元素可以认为已经被排序; 步骤二:取出下一个元素,在已经排序的元素序列中从后向前扫描; 步骤三:如果该元素(已排序)大于新元素,将该元素移到下一位置; 步骤四:重复步骤3,直到找到已排序的元素小于或者等于新元素的位置; 步骤五:将新元素插

Coder_JC_Liu的博客 241

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[牛客经典必刷算法题] LC8-重排链表

牛客经典必刷算法题-LC8-重排链表题目描述示例思路算法过程解答 ------------------------------本题链接--------------------------- 题目描述 将给定的单链表 L:L0→L1→…→Ln−1→LnL:L_0→L_1→…→L_{n-1}→L_ nL:L0​→L1​→…→Ln−1​→Ln​ 重新排序为:L0→Ln→L1→Ln−1→L2→Ln−2→…L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…L0​→Ln​→L1​→Ln−1​→L2​

Coder_JC_Liu的博客 384

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

牛客面试必刷101代码总结【python】

牛客面试题必刷101代码总结

Anthony_hit的博客 2326

牛客算法题

字节题库 NC78 反转链表 NC78 反转链表 迭代法 class Solution: # 返回ListNode def ReverseList(self, pHead): p=pHead pre=None while p: aft=p.next p.next=pre pre=p p=aft return pre 递归法.

using namespace 数学工具构造器; 394

小白牛客刷题LC8重新排序C++

QT学习第一天 学习地址:https://www.bilibili.com/video/BV1g4411H78N?p=2&share_source=copy_web QT是一个跨平台的 功能快捷键 撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ctrl/Command + Shift + H 无序列表:Ctrl/Command + Shift + U 有序列表:Ctrl/Comma

Sphahahah的博客 248

迷茫的一周(刷牛客题) 2025/3/28

怀疑人生,知识学一次忘一次

yesyesyes_yes的博客 1055

JehanRio‘s 后端高频面试题合集

先贴一张图,目前我刷题的记录大概是350多题,加上牛客刷的,差不多有400道题了吧,可能比这个数量少一些。我从22年1月开始陆陆续续刷题,那个时候为了刷蓝桥杯,刷了很多题,很荣幸,在刚开始接触算法一两个月,就拿到了一等奖。但是后面因为期末各种原因,没能继续走下去。直到今年3月开始,才又恢复了刷题的习惯。但这刷过的题中,很多都是很久以前刷的,有些题甚至二刷时还是一点思路没有,属于是刷了忘,忘了刷。在这之前我一直是分专题刷的,现如今也到了该收网总结,模考的时候了。就像是高中高一高二打基础,高三总复习一样。

JehanRio's Private Blog 1154

【LC】二叉树应用强化OJ

二叉树的使用运用, OJ习题解析, 巩固理解练习二叉树的各种操作.

trong_ 的烂笔头 2338

算法面试准备度评估:从刷题数量到能力体系的实战指南

算法与数据结构是计算机科学的核心基础,其原理在于通过高效的数据组织和计算步骤解决特定问题,旨在优化程序的时间与空间复杂度。掌握它们对于提升软件工程能力、通过技术面试具有关键价值,广泛应用于后端开发、系统设计及大规模数据处理等场景。本文聚焦于**算法面试准备**这一具体实践,针对求职者普遍关心的“刷题数量”与“面试表现”脱节的核心痛点,提供了一套基于**知识体系**、**解题熟练度**和**沟通应变**三维度的可量化评估框架与分阶段训练策略,帮助开发者将零散的刷题转化为系统性的能力提升,从而自信应对国内外大厂

weixin_30571465的博客 368

面试大厂leetcode重点题型简洁明快复习(dfs/bfs,动态规划,链表,滑动窗口/双指针,回溯,ACM型输入输出,二分)

笔者正在应聘大厂的春招岗位,笔者筛选了一下经常遇到的面试题型重点dfs/bfs动态规划链表滑动窗口/双指针回溯ACM型输入输出二分),笔者这里也尽量挑里面的最重点题型,从问题入手,对这些题型进行简洁明快的复习,其他的一些数据结构的题,也考,但笔者认为不是重点,这里就不提了。

weixin_44151034的博客 585

字节跳动测试开发1.5w字面经(已入职),附部门直推

入职已经两周了,整体工作环境还是非常满意的!终于抽空能和头条的小伙伴们分享一下面试&入职的经验了! 我在11月中的时候投递了简历,1月的时候经过了3轮面试收获了Offer,当时也参考了很多牛客网上的面经。 今天来把当初自己整理的所有可能会问到的题目都分享给大家。 此外部门内也很缺人,校招社招实习都可以,有兴趣的小伙伴可以抓紧投简历鸭! 个人信息 自我介绍 项目(重要) 项目中最大的挑战,花费最长时间的项目,比较有成就感的事情 项目中印象最深的bug 有什么想问的吗 适合业务测试还是

Androidbye的博客 2423

二本逆袭阿里实习:从简历准备到面试全流程经验分享

大厂实习招聘看似遥不可及,尤其对于非名校背景的学生,但学历只是起点而非终点。在技术岗位的选拔中,面试官真正关注的是候选人的基础功底、项目实践与解决问题的思路。以Java后端为例,扎实掌握集合框架、并发编程、JVM内存模型,以及MySQL索引优化等核心知识,是应对技术面的关键。同时,一份用结果和数据说话的简历、一条有深度的个人项目经验,能帮助简历在众多投递中脱颖而出。从算法刷题到系统设计,再到HR面的沟通表达,每一轮都有明确的考察逻辑与准备方法。本文从求职准备的通用思路出发,结合真实面试经历,详细拆解了简历撰

weixin_34294649的博客 381

第四范式算法岗笔试解析:机器学习与核心算法备考指南

机器学习与算法数据结构是AI算法岗笔试的两大基石。理解模型原理、损失函数与正则化机制,掌握KMP、动态规划、图论等高频算法,是应对复杂工程问题的关键。在算法工程师的求职竞争中,笔试不仅考查知识记忆,更检验对底层逻辑的迁移能力。从经典分类模型到粒子群优化等启发式算法,再到分布式环境下的工程细节,都体现了AI基建岗位对候选人综合素质的要求。本文结合第四范式秋招真题,梳理机器学习理论、数据结构与算法编程题的考察脉络,帮助备考者构建系统化复习路径,在有限时间内高效提升笔试通过率。

weixin_34198881的博客 409

牛客题霸 单链表的选择排序 C++题解/答案

牛客题霸 单链表的选择排序 C++题解/答案 题目描述 给定一个无序单链表,实现单链表的选择排序(按升序排序)。 题解: 不可能手写排序,这辈子不可能手写排序。。 基础的链表操作,将链表内的数据存到vector内,然后用sort排序,再将vector内的数据存会数组即可 代码: /** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** *

qq_35975367的博客 687
上一篇: centos7配置阿里云yum源
下一篇: [牛客经典必刷算法题] LC5-链表的插入排序
Coder_JC_Liu
博客等级 码龄7年 2粉丝 30原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值