[DLdigest-22] 合并两个有序链表

2019 年 4 月 28 日 深度学习每日摘要
问题介绍

给定两个已经排好序的链表,将它们合并成为一个新的链表,例如链表a为1->2->4,链表b为1->3->4,合并后为1->1->2->3->4->4。

解决思路

因为两个链表都是各自已经排好序的,姑且认为从小到大的顺序。该问题比较容易解决,我们可以先考虑特殊情况,例如如果其中一个链表为空,则直接返回另一个链表;然后,我们先比较两个链表的第一个元素,取较小的元素为新的链表的起始指针;再对两个链表各自定义一个位置指针,将两个链表当前位置指针的值进行比较,取较小的指针作为新链表的下一个元素,并且更新原链表的指针位置;最后,当某个链表的位置指针为空时,则表明拼接结束。C++程序如下,我们默认已经定义好了ListNode结构体,结构体包含整形变量val以及同类型的结构体指针next,整个程序运行耗时8ms。

C++实现
/**
* 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* tmpNode1=l1;
ListNode* tmpNode2=l2;
ListNode* firstNode;
ListNode* currentNode;
if(l1 == NULL)
return l2;
else if(l2==NULL)
return l1;
if((tmpNode1->val)<(tmpNode2->val)){
firstNode=l1;
tmpNode1=tmpNode1->next;
firstNode->next=l2;
}
else{
firstNode=l2;
tmpNode2=tmpNode2->next;
firstNode->next=l1;
}
currentNode = firstNode;

while(tmpNode1!=NULL && tmpNode2!=NULL){
if((tmpNode1->val) < (tmpNode2->val)){
currentNode->next = tmpNode1;
tmpNode1 = tmpNode1->next;
currentNode = currentNode->next;
currentNode->next = tmpNode2;
}
else{
currentNode->next = tmpNode2;
tmpNode2 = tmpNode2->next;
currentNode = currentNode->next;
currentNode->next = tmpNode1;
}
}
return firstNode;
}
};


往期推送:

[DLdigest-21] 检测括号字符串是否有效匹配

[DLdigest-20] 不同场景下的中文汉字转阿拉伯数字

[DLdigest-19] 不同场景下文本中的阿拉伯数字转中文汉字

[DLdigest-18] 电话号码的字母组合

[DLdigest-17] 3Sum Closest

[DLdigest-16] 3SUM


从信息论的角度来理解损失函数

从泰勒展开来看梯度下降算法

登录查看更多
0

相关内容

【MIT】Yufei Zhao《图论与加法组合学》,177页pdf
专知会员服务
49+阅读 · 2020年4月27日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
【WWW2020-微软】理解用户行为用于文档推荐
专知会员服务
35+阅读 · 2020年4月5日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
如何构建行业知识图谱(以医疗行业为例)
LeetCode的C++ 11/Python3 题解及解释
专知
16+阅读 · 2019年4月13日
面试时让你手推公式不在害怕 | 梯度下降
计算机视觉life
14+阅读 · 2019年3月27日
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
线性回归:简单线性回归详解
专知
12+阅读 · 2018年3月10日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
神经网络理论基础及 Python 实现
Python开发者
6+阅读 · 2017年7月15日
Self-Attention Graph Pooling
Arxiv
13+阅读 · 2019年6月13日
Implicit Maximum Likelihood Estimation
Arxiv
7+阅读 · 2018年9月24日
Arxiv
5+阅读 · 2018年4月22日
Arxiv
3+阅读 · 2018年4月9日
VIP会员
相关VIP内容
相关资讯
如何构建行业知识图谱(以医疗行业为例)
LeetCode的C++ 11/Python3 题解及解释
专知
16+阅读 · 2019年4月13日
面试时让你手推公式不在害怕 | 梯度下降
计算机视觉life
14+阅读 · 2019年3月27日
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
线性回归:简单线性回归详解
专知
12+阅读 · 2018年3月10日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
神经网络理论基础及 Python 实现
Python开发者
6+阅读 · 2017年7月15日
Top
微信扫码咨询专知VIP会员