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

【牛客刷题专栏】0x26:JZ25 合并两个排序的链表(C语言编程题)

前言

  • 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失
  • 个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述

目录

  • 前言
  • 问题描述:
  • 举例:
  • 解法思路:
  • 代码结果:
  • 结束语


问题描述:

  • 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。

  • 数据范围:0≤n≤1000,−1000≤节点值≤1000

  • 要求:空间复杂度 O(1),时间复杂度 O(n)

  • 如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:
    在这里插入图片描述

  • 或输入{-1,2,4},{1,3,4}时,合并后的链表为{-1,1,2,3,4,4},所以对应的输出为{-1,1,2,3,4,4},转换过程如下图所示:
    在这里插入图片描述


举例:

//示例1:
//输入:
{1,3,5},{2,4,6}
//返回值:
{1,2,3,4,5,6}
//==========================
//示例2:
//输入:
{},{}
//返回值:
{}
//==========================
//示例3:
//输入:
{-1,2,4},{1,3,4}
//返回值:
{-1,1,2,3,4,4}

解法思路:

  • 采用递归法对两个链表的节点进行比较,将小的头节点取出,并将其添加到新的链表后面,剩下的部分再进行比较,重复上述过程,直到两个链表为空。

代码结果:

```/*** struct ListNode {*	int val;*	struct ListNode *next;* };** C语言声明定义全局变量请加上static,防止重复定义*//*** * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类*/
struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {// write code hereif(pHead1 == NULL)return pHead2;if(pHead2 == NULL)return pHead1;struct ListNode *phead = NULL;if(pHead1->val < pHead2->val){phead = pHead1;phead->next = Merge(pHead1->next, pHead2);}else{phead = pHead2;phead->next = Merge(pHead1, pHead2->next);}return phead;
}


结束语

  • 以上就是该C语言编程题的内容。可以在牛客尝试刷几道题目来练习实践。牛客网刷题(点击可以跳转),可以尝试注册使用。
  • 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述
http://www.lryc.cn/news/66533.html

相关文章:

  • 5/5~5/7总结
  • 重要通知|Sui测试网将于5月11日重置
  • 教你快速把heic格式转化jpg,4种方法操作简单
  • 交互式数据分析和处理新方法:pandas-ai =Pandas + ChatGPT
  • FIR滤波
  • Python小姿势 - Python中的类型检查
  • 人工智能前景
  • python并发编程学习笔记--生产者消费者模型 day02
  • 彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!
  • 深入学习MYSQL-数据操纵及视图
  • 深入讲解eMMC简介
  • ICV:中国车载超声波雷达市场规模预计2024年可达20亿美元
  • PointNet:利用深度学习对点云进行3D分类和语义分割
  • 第四十二章 Unity 下拉框 (Dropdown) UI
  • STL常用梳理——STACK、QUEUE
  • Unity物理系统基本概念
  • 防止表单重复提交的几种方式,演示一个自定义注解方式的实现
  • 《基于智能手机采集的PPG信号预测血管老化》阅读笔记
  • 【大数据-调度工具】dolphinscheduler安装和遇到的问题
  • 滑动轨迹生成的思路和代码分享-测试可过极验 90%机率
  • 【Linux】项目自动化构建工具make/makefile
  • 【系分范文】论软件需求获取技术以及应用
  • vue2.0中post请求
  • MySQL双写缓冲区(Doublewrite Buffer)
  • 免费开源的Umi-OCR 文字识别工具
  • 如何让微信小程序弹窗滚动条设置在最上面
  • c语言-指针
  • Jenkins集成SonarQube实现代码质量检查
  • 2023 谷歌I/O发布会新AI,PALM 2模型要反超GPT-4,一雪前耻!
  • MySQL和Redis如何保证数据一致性?