电子商务网站建设题库,dw做网站小技巧,广州哪家网站建设最好,郑州定制网站开发前言
个人推荐在牛客网刷题(点击可以跳转)#xff0c;它登陆后会保存刷题记录进度#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏#xff1a;个人CSDN牛客刷题专栏。 题目来自#xff1a;牛客/题库 / 在线编程 / 剑指offer#xff1a; 目录 前言问…前言
个人推荐在牛客网刷题(点击可以跳转)它登陆后会保存刷题记录进度重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏个人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