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

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

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

本题链接

题目描述

使用插入排序对链表进行排序。

示例

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

思路

通过虚拟头节点处理链表排序

插入排序算法描述:

  • 步骤一:从第一个元素开始,该元素可以认为已经被排序;
  • 步骤二:取出下一个元素,在已经排序的元素序列中从后向前扫描;
  • 步骤三:如果该元素(已排序)大于新元素,将该元素移到下一位置;
  • 步骤四:重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  • 步骤五:将新元素插入到该位置后;
  • 步骤六:重复步骤二~五

解答

import java.util.*;

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

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    public ListNode insertionSortList (ListNode head) {
        if(head == null || head.next == null) return head;
        // 虚节点
        ListNode dummy = new ListNode(-1), pre;
        dummy.next = head;
        
        while(head != null && head.next != null){
            // 如果小于下一节点,直接跳过,加速排序
            if(head.val <= head.next.val){
                head = head.next;
                continue;
            }
            
            // 寻找当前节点正确位置
            pre = dummy;
            while(pre.next.val < head.next.val) pre = pre.next;
            // 取出当前节点curr
            ListNode curr = head.next;
            //保存下一节点
            head.next = curr.next;
            // 插入操作
            curr.next = pre.next;
            pre.next = curr;
        }
        return dummy.next;
    }
}
AI大模型驱动Web UI自动化测试:Playwright与RobotFramework智能整合实践 Web自动化测试是软件质量保障的关键环节,其核心原理是通过脚本模拟用户操作,对Web应用界面进行功能验证。传统方法依赖固定的元素定位和脚本逻辑,在应对频繁的UI变更时面临维护成本高、脚本脆弱的挑战。随着AI大模型技术的发展,其强大的自然语言理解和代码生成能力为自动化测试带来了新的技术价值。通过将大模型的意图理解与代码生成能力,与Playwright强大的浏览器自动化执行引擎以及RobotFramework灵活的关键字驱动框架相结合,可以构建出能够理解自然语言指令、动态生成稳定操作脚本的智能测试系统。这种融合 阅读详情

相关推荐

Centos7.9上安装glibc2.28遇到/usr/bin/ld: cannot find -lnss_test2问题

Centos7.9安装glic2.28遇到-lnss_test2问题及解决方案。

freflying1119的博客 2898

LeetCode-04:实现链表的插入排序

题目 使用插入排序对链表进行排序。 Sort a linked list using insertion sort. 输入 {3,2,4} 输出 {2,3,4} 思路 若要使得时间复杂度为O(nlogn),常用排序算法有归并算法,但常用归并算法采用了递归的形式,因此此题解法暂时无法满足空间复杂度为常数的条件。 关键点: 1、题干给出的数据结构为链表,注意理清链表中结点的链接变换关系。如node.next=node与node=node.next之间的差异,前者意为将node的指针指向node,后者意为

qq_46993700的博客 1419

深入Google DroidGuard:剖析其自定义虚拟机如何守护Android应用安全(附pcbc文件机制解析)

本文深入解析Google DroidGuard自定义虚拟机如何通过独特的架构设计和加密机制保护Android应用安全。DroidGuard采用动态密钥派生、全加密执行环境和pcbc文件机制,有效防御逆向工程和自动化攻击,为移动安全提供新思路。

weixin_34254464的博客 306

两个无序单链表 排序后合并成一个有序链表

两个无序单链表 排序后合并成一个有序链表

gdfjhc的博客 2293

树莓派作为Modbus服务器:pymodbus配置全记录

手把手教你用树莓派部署Modbus服务器,核心基于pymodbus实现数据通信与设备控制,涵盖配置步骤与常见问题,适合工业自动化场景应用。

weixin_42510201的博客 753

强化学习Q值迭代的几何视角:从策略区域到快速收敛

在强化学习中,Q值迭代是求解最优策略的核心算法,其理论基础建立在贝尔曼不动点定理之上。该算法通过迭代更新Q函数,使其逐步逼近最优值函数。从几何视角看,整个Q函数空间可被视为一个高维流形,每个Q函数对应流形上的一个点,而贝尔曼最优算子则定义了流形上的变换轨迹。理解这一几何结构,特别是由策略超平面划分出的凸多面体区域,对于分析算法的收敛行为至关重要。在实际工程中,传统Q值迭代可能在高维或稀疏奖励环境下收敛缓慢,甚至陷入策略高原。通过引入策略区域缓存与自适应学习率等几何启发方法,可以更高效地导航策略空间,加速策略

weixin_30444111的博客 317

数据结构与算法--链表的高效插值(有图,对小白友好)

数据结构与算法–链表的高效插值 刚刚学习了数据结构的链表结构,其中用C语言打的insert_list函数花了很长的时间,很有感触,在这里分享下。 //插入--高效 bool insert_list(PNODE pHead,int pos,int val) //pos>=1 { int i = 0; PNODE p = pHead; while (NULL != p && i<pos-1) { p = p->pNext; i++; } if(i.

qq_52825803的博客 410

YOLO26优化:特征融合 | 一种新颖的多尺度特征融合iAFF,适配小目标检测

在YOLO26中如何使用:iAFF加入Neck替代Concat;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 268

牛客网每日一道 LC5 使用插入排序对链表进行排序 5/147

解题思路: 解题思路就是根据插入排序的思想,每次遍历都保证前n个数都是排好序的,那么按照原生的插入排序,是从当前元素前一个元素开始一个一个往前判断,只要比前面元素小,则往前移动,一直移动到有一个元素小于它或者移动到头部了则停止,这个位置就是当前元素在这一趟中应该在的位置。但是链表中不好往前移,只能每次都从头部开始往后判断,一直找到第一个比当前元素大的元素停止,然后调整一下指针,就是让当前元素插入到本趟合适的位置。由于有可能要与第一个元素交换,所以搞一个虚拟头节点处理起来会简单一点。 参考Java实现: 链.

weixin_43774841的博客 188

LearningToRank(LTR)排序算法LGBMRanker的原理和使用

1. 写在前面 在最近新闻推荐的比赛中, 接触到了一个排序模型LGBMRanker, 该模型与普通的分类模型LGBMClassifier不太一样, 普通的分类模型在进行推荐的时候, 往往是先预测某个商品或者文章用户会不会点击, 也就是它的目标是预测用户点击某篇文章或者某个商品的概率, 然后根据这个概率值进行排序, 排完之后,把最靠前的几个返回回来给用户进行推荐。 而LGBRanker模型, 它不关心用户点击某篇文章的概率, 而是根据用户点击或者不点击的这个行为, 直接去预测最后商品或者文章的一个相对顺序,

Miracle8070 1万+

Android影像系统架构专家面试指南

传音控股招聘影像系统架构专家,要求8年以上开发经验,5年架构设计经验,精通Android Camera开发及性能优化。该职位需负责手机影像软件架构设计、技术选型及跨平台适配,重点解决"快稳省"体验优化。面试评估聚焦三大维度:技术方面考察HAL层架构设计、多帧合成优化等能力;系统开发关注低光降噪等场景的算力平衡;团队管理侧重跨部门协作与项目交付。候选人需展现对CamX-CHI等架构的深入理解,具备量化分析性能指标的能力,并能主导旗舰机影像项目全周期落地。

郑伟强dev的专栏 938

链表的插入排序

1 题目链接 链表的插入排序 2 题目描述 描述 使用插入排序对链表进行排序。 示例 输入:{30,20,40} 返回值:{20,30,40} 3 代码思路 牛客网关于链表的题目,传入的参数都是不带表头结点。 因此我们为了第一个结点和后边结点插入方法相同,创建一个新的带表头结点的链表。每次取原链表中的一个值,然后在新链表中找到该值的插入位置。此时应注意,我们采用后插法,需要找到小于当前值的最后一个。找到之后,将当前值插入到新链表,直到原链表为空。 4 代码实现 public class Solut

木水先生的博客 252

Hugging Face 最新开源 SmolVLA 小模型入门教程(一)

今天,我们介绍SmolVLA,这是一个紧凑型(450M)、开源的视觉-语言-动作模型,专为机器人设计,可在消费级硬件上运行。 仅在带有lerobot标签的开源社区共享数据集上进行预训练。 SmolVLA-450M在模拟环境(LIBERO、Meta-World)和真实世界任务(SO100、SO101)中,表现优于规模更大的VLA模型及强基线模型如ACT。 支持异步推理,响应速度提升30%,任务吞吐量提升2倍。

2506_90492529的博客 4076

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

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

yesyesyes_yes的博客 1055

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

使用插入排序排序一个链表。

题目:使用插入排序排序一个链表。思路:什么是插入排序?每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。新建一个链表用于存放有序结果;指定一个遍历指针用于遍历原始无序链表,指向当前正在排序的节点;指定一个位置指针用于遍历有序链表,查找插入的位置,注意被排序节点与位置指针的后一个节点进行比较。代码:public class ListNode { in...

一整个宇宙换一颗红豆 334

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode-学会对无序链表进行插入排序(详解)

目录前言一、对无序链表进行插入排序题链接题目描述题目思路代码1代码2总结 前言 请坐 一、对无序链表进行插入排序题链接 题目描述 对链表进行插入排序。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 测试样例1: 输入: 4->2->1->3 输出: 1->2->3->4

qq_53505979的博客 847

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 166

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 223

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 549

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 17

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 641

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 365

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 152

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 79

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 176

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 309
上一篇: [牛客经典必刷算法题] LC4-链表排序
下一篇: [牛客经典必刷算法题] LC6-二叉树的后序遍历
Coder_JC_Liu
博客等级 码龄7年 2粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值