概述
微信改版,加星标不迷路!
每日一算法-合并两个有序链表
作者:阿广
阅读目录
1 题目
2 解析
1 题目
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
2 解析
从两链表第一个结点开始比较结点的值,取较小者作为合并链表的元素,依次进行;后面如果有一个链表为空,则直接把不为空的链表接到合并链表的后面。
2.1从两链表第一个结点开始比较结点的值,取较小者作为合并链表的元素,依次进行;
if(temp1->val>temp2->val){
ret->next=temp2;
ret=ret->next;
temp2=temp2->next;
}else{
ret->next=temp1;
ret=ret->next;
temp1=temp1->next;
}
2.2后面如果有一个链表为空,则直接把不为空的链表接到合并链表的后面。
if(temp1==NULL&&temp2!=NULL){
ret->next=temp2;
}
if(temp2==NULL&&temp1!=NULL){
ret->next=temp1;
}
2.3结果
3 完整代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* temp1=l1;
ListNode* temp2=l2;
ListNode* ret=new ListNode(0);
ListNode* ret1=ret;
while(temp1!=NULL&&temp2!=NULL)
{
if(temp1->val>temp2->val)
{
ret->next=temp2;
ret=ret->next;
temp2=temp2->next;
}else
{
ret->next=temp1;
ret=ret->next;
temp1=temp1->next;
}
}
if(temp1==NULL&&temp2!=NULL)
{
ret->next=temp2;
}
if(temp2==NULL&&temp1!=NULL)
{
ret->next=temp1;
}
return ret1->next;
}
};
今日问题
本硕博的区别,你觉得是什么?
打卡格式:打卡第n天,答:...
为什么打卡?戳下面你就知道了!
猛
戳
这
儿
21/天/养/一/个/好/习/惯
最后
以上就是热心玉米为你收集整理的【每日一算法】 合并两个有序链表每日一算法-合并两个有序链表的全部内容,希望文章能够帮你解决【每日一算法】 合并两个有序链表每日一算法-合并两个有序链表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复