当前位置: 首页 > article >正文

LeetCode 21. 合并两个有序链表(C语言详解 | 链表经典题)

一、题目描述给定两个按非递减顺序排列的链表list1和list2将它们合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1输入l1 [1,2,4], l2 [1,3,4] 输出[1,1,2,3,4,4]示例 2输入l1 [], l2 [] 输出[]示例 3输入l1 [], l2 [0] 输出[0]提示两个链表的节点数目范围是[0, 50]-100 Node.val 100l1和l2均按非递减顺序排列二、解题思路由于两个链表已经是有序链表我们可以使用双指针思想来解决。思路如下创建一个虚拟头节点 dummy用于简化链表操作。定义一个指针cur指向当前新链表的末尾。同时遍历list1和list2比较两个节点的值将较小的节点接到新链表后面移动对应链表指针当其中一个链表遍历结束时直接把剩余链表接到新链表末尾。示意过程list1: 1 - 2 - 4 list2: 1 - 3 - 4 比较过程 1 vs 1 - 取 list1 2 vs 1 - 取 list2 2 vs 3 - 取 list1 4 vs 3 - 取 list2 4 vs 4 - 取 list1 剩余 - 接上 list2最终结果1 - 1 - 2 - 3 - 4 - 4三、C语言代码实现/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) { // 创建虚拟头节点 struct ListNode dummy; struct ListNode *cur dummy; dummy.next NULL; // 同时遍历两个链表 while(list1 ! NULL list2 ! NULL) { if(list1-val list2-val) { cur-next list1; list1 list1-next; } else { cur-next list2; list2 list2-next; } cur cur-next; } // 连接剩余链表 if(list1 ! NULL) cur-next list1; else cur-next list2; return dummy.next; }四、复杂度分析时间复杂度O(n m)n为list1的长度m为list2的长度每个节点最多访问一次。空间复杂度O(1)只使用了几个指针变量没有额外空间开销。五、为什么使用虚拟头节点如果不使用dummy新链表的第一个节点需要单独处理。例如head list1 or list2 ?代码逻辑会变复杂。使用虚拟头节点后dummy - 1 - 1 - 2 - 3 - 4 - 4最终返回dummy.next这样可以统一处理所有节点代码更加简洁清晰。六、递归解法扩展除了迭代方法还可以使用递归来实现。思路如果list1较小则list1-next与list2继续合并如果list2较小则list2-next与list1继续合并代码如下struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) { if(list1 NULL) return list2; if(list2 NULL) return list1; if(list1-val list2-val) { list1-next mergeTwoLists(list1-next, list2); return list1; } else { list2-next mergeTwoLists(list1, list2-next); return list2; } }七、总结本题是链表中的经典基础题目核心思想是⭐双指针 有序链表合并关键点使用虚拟头节点简化操作每次选择较小节点接入新链表最后连接剩余链表时间复杂度O(n m)空间复杂度O(1)这道题也是很多链表题目的基础例如23. 合并 K 个升序链表148. 排序链表归并排序链表掌握这道题对于理解链表合并思想非常重要。

相关文章:

LeetCode 21. 合并两个有序链表(C语言详解 | 链表经典题)

一、题目描述给定两个 按非递减顺序排列 的链表 list1 和 list2,将它们合并为一个新的 升序链表 并返回。新链表是通过 拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2&…...

LeetCode热题100 组合总和

题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选…...

LeetCode热题100 电话号码的字母组合

题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1:输入 :digits “23” 输出 &#…...

终极Media Player Classic硬件加速故障排除与性能优化指南

终极Media Player Classic硬件加速故障排除与性能优化指南 【免费下载链接】mpc-hc Media Player Classic 项目地址: https://gitcode.com/gh_mirrors/mp/mpc-hc Media Player Classic(MPC-HC)是一款轻量级且功能强大的媒体播放器,支持…...

终极Android 14媒体权限适配指南:PictureSelector全面升级实战

终极Android 14媒体权限适配指南:PictureSelector全面升级实战 【免费下载链接】PictureSelector Picture Selector Library for Android or 图片选择器 项目地址: https://gitcode.com/gh_mirrors/pict/PictureSelector 随着Android 14系统的普及&#xff0…...

VBA Web服务开发终极指南:轻松实现Excel自动化与数据同步

VBA Web服务开发终极指南:轻松实现Excel自动化与数据同步 【免费下载链接】VBA-Web VBA-Web: Connect VBA, Excel, Access, and Office for Windows and Mac to web services and the web 项目地址: https://gitcode.com/gh_mirrors/vb/VBA-Web VBA-Web是一款…...

微信小助手:解锁macOS微信全新体验的5个实用技巧

微信小助手:解锁macOS微信全新体验的5个实用技巧 【免费下载链接】WeChatPlugin-MacOS 微信小助手 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPlugin-MacOS 微信小助手(WeChatPlugin-MacOS)是一款专为macOS用户打造的微信增…...

Sketch Palettes 终极指南:3分钟掌握设计颜色管理

Sketch Palettes 终极指南:3分钟掌握设计颜色管理 【免费下载链接】sketch-palettes A Sketch plugin for exporting and importing fill presets. It supports colors, gradients, and pattern fills. 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-palet…...

如何用FATE联邦学习平台安全解锁数据价值:完整指南

如何用FATE联邦学习平台安全解锁数据价值:完整指南 【免费下载链接】FATE 项目地址: https://gitcode.com/gh_mirrors/fat/FATE 在当今数据驱动的时代,数据共享与隐私保护之间的矛盾日益凸显。FATE(Federated AI Technology Enabler&…...

终极指南:如何用BluetoothKit快速构建iOS蓝牙应用

终极指南:如何用BluetoothKit快速构建iOS蓝牙应用 【免费下载链接】BluetoothKit 项目地址: https://gitcode.com/gh_mirrors/blu/BluetoothKit BluetoothKit是一款专为iOS平台设计的蓝牙开发框架,它极大简化了传统CoreBluetooth框架的复杂操作&…...

邮箱验证终极指南:无需发送邮件即可快速检测邮箱真实性

邮箱验证终极指南:无需发送邮件即可快速检测邮箱真实性 【免费下载链接】check-if-email-exists Check if an email address exists without sending any email, written in Rust. Comes with a ⚙️ HTTP backend. 项目地址: https://gitcode.com/gh_mirrors/ch/…...

为什么选择Peek:终极轻量级屏幕录制解决方案

为什么选择Peek:终极轻量级屏幕录制解决方案 【免费下载链接】peek Simple animated GIF screen recorder with an easy to use interface 项目地址: https://gitcode.com/gh_mirrors/pe/peek Peek是一款简单易用的屏幕录制工具,专注于创建高质量…...

如何快速实现多语种语音识别?PaddleX全流程实践指南

如何快速实现多语种语音识别?PaddleX全流程实践指南 【免费下载链接】PaddleX PaddlePaddle End-to-End Development Toolkit(『飞桨』深度学习全流程开发工具) 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleX PaddleX是飞桨深…...

RMBG-2.0效果展示:多人合影精细分割+重叠肢体分离能力实测

RMBG-2.0效果展示:多人合影精细分割重叠肢体分离能力实测 1. 开篇:新一代背景移除技术的突破 今天我要给大家展示一个让人惊艳的背景移除工具——RMBG-2.0。这不是普通的抠图软件,而是一个基于先进AI技术的专业级背景移除模型。 想象一下这…...

DeOldify在摄影工作室的应用:客户黑白底片快速上色交付SOP流程

DeOldify在摄影工作室的应用:客户黑白底片快速上色交付SOP流程 1. 项目背景与价值 在摄影工作室的日常运营中,经常遇到客户送来珍贵的黑白老照片或底片,希望能够还原成彩色版本。传统的手工上色不仅耗时耗力,而且对技师的艺术功…...

GLM-4v-9b入门指南:GLM-4v-9b与GLM-4-9B语言模型的协同调用策略

GLM-4v-9b入门指南:GLM-4v-9b与GLM-4-9B语言模型的协同调用策略 想象一下,你手头有一张复杂的财务报表截图,上面密密麻麻全是数字和图表。你不仅想知道这些图表在说什么,还想让AI帮你分析一下数据趋势,甚至生成一份简…...

OFA视觉问答镜像多场景落地:教育、电商、医疗、工业四维解析

OFA视觉问答镜像多场景落地:教育、电商、医疗、工业四维解析 1. 引言:视觉问答技术的实用价值 想象一下,你有一张图片,但不知道里面有什么内容。传统方法需要人工查看并描述,但现在有了OFA视觉问答(VQA&a…...

Asian Beauty Z-Image Turbo实操教程:调节Steps=20与CFG=2.0的黄金组合

Asian Beauty Z-Image Turbo实操教程:调节Steps20与CFG2.0的黄金组合 1. 工具简介 Asian Beauty Z-Image Turbo是一款专门针对东方美学人像生成的本地化工具,基于通义千问Tongyi-MAI Z-Image底座模型,结合Asian-beauty专用权重开发而成。这…...

影墨·今颜FLUX.1-dev部署避坑指南:CUDA版本、依赖库、显存报错解决

影墨今颜FLUX.1-dev部署避坑指南:CUDA版本、依赖库、显存报错解决 1. 环境准备与系统要求 在开始部署影墨今颜FLUX.1-dev之前,需要确保你的系统环境满足基本要求。这个基于FLUX.1-dev的极境真实摄影创作平台对硬件和软件环境都有特定需求。 最低系统要…...

深度学习项目训练环境入门指南:Python 3.10下CUDA加速检测与GPU可用性确认

深度学习项目训练环境入门指南:Python 3.10下CUDA加速检测与GPU可用性确认 1. 环境准备与基础检查 深度学习项目训练离不开合适的硬件环境支持,其中GPU加速是关键因素。本指南将带你快速确认Python 3.10环境下CUDA的可用性和GPU的工作状态。 在开始深…...

全任务零样本学习-mT5分类增强版实战教程:对接企业知识库构建专属文本增强SaaS

全任务零样本学习-mT5分类增强版实战教程:对接企业知识库构建专属文本增强SaaS 1. 引言 你有没有遇到过这样的问题?公司内部有大量的产品文档、客服对话、技术报告,但这些文本数据质量参差不齐,有的表述冗余,有的信息…...

Ostrakon-VL-8B快速部署:supervisor服务管理+7860端口故障排查

Ostrakon-VL-8B快速部署:supervisor服务管理7860端口故障排查 1. 引言:为什么你需要关注这个零售AI助手 想象一下这个场景:你是一家连锁超市的运营经理,每天要巡查几十家门店,检查货架陈列是否规范、价格标签是否清晰…...

IE浏览器无法使用?原因与解决方案全解析

不少用户仍会遇到IE浏览器无法启动、页面空白或崩溃等问题,其实核心原因在于这款浏览器已正式退出历史舞台。微软早在2022年6月就终止了对IE的全部支持,不再提供安全补丁和功能更新,加之其对现代网页标准兼容性极差,自然频繁出现故…...

FireRedASR-AED-L生产环境:高并发语音识别压力测试与性能调优

FireRedASR-AED-L生产环境:高并发语音识别压力测试与性能调优 你部署好了FireRedASR-AED-L,上传一段音频,识别结果秒出,感觉一切完美。但当你的应用用户量激增,每分钟涌入上百个语音识别请求时,系统开始报…...

麒麟服务器操作系统中安装NVIDIA5080显卡驱动

编辑配置文件禁用开源驱动: 在终端中输入如下命令 vi /usr/lib/modprobe.d/dist-blacklist.conf调用编辑器,在最后两行加入以下命令,保存修改。 blacklist nouveau options nouveau modeset=0 3.3.将路径/boot/initrd.img-xxxx文件备份 mv /boot/initramfs-$(uname -r).…...

Qwen3-TTS-12Hz效果惊艳:情感语调自适应语音 vs 传统TTS对比展示

Qwen3-TTS-12Hz效果惊艳:情感语调自适应语音 vs 传统TTS对比展示 你有没有听过一段语音,刚开口就让你停下脚步?不是因为内容多特别,而是那个声音——有温度、有呼吸、有犹豫时的微顿,也有兴奋时的上扬。这不是配音演员…...

MedGemma 1.5保姆级教程:启用日志审计功能追踪每一次本地推理的数据生命周期

MedGemma 1.5保姆级教程:启用日志审计功能追踪每一次本地推理的数据生命周期 1. 项目概述与日志审计价值 MedGemma 1.5是基于Google Gemma架构的医学思维链推理引擎,专门为医学咨询、病理分析和术语解释设计。作为一个运行在本地GPU上的医疗AI问答系统…...

⚖️Lychee-Rerank在企业知识库中的应用:本地化文档筛选与精准排序落地实践

Lychee-Rerank在企业知识库中的应用:本地化文档筛选与精准排序落地实践 你是不是也遇到过这样的烦恼?公司内部的知识库文档堆积如山,每次想找点资料,就像大海捞针。输入一个关键词,搜出来几十篇文档,结果一…...

OneAPI Mistral轻量模型部署:x86服务器高效运行开源小模型方案

OneAPI Mistral轻量模型部署:x86服务器高效运行开源小模型方案 1. 引言:统一API访问的革命性方案 你是否曾经为了对接不同的大模型API而头疼不已?每个平台都有自己的接口规范、认证方式和计费规则,开发过程中需要不断切换和适配…...

Ostrakon-VL-8B应用创新:结合AR眼镜实现店员第一视角实时合规提示

Ostrakon-VL-8B应用创新:结合AR眼镜实现店员第一视角实时合规提示 1. 引言:当AI视觉助手“戴”在眼前 想象一下,你是一家连锁超市的店员,每天要面对上千种商品、几十个货架。货品摆放是否整齐?价格标签有没有贴错&am…...