#leetcode刷题之路21-合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
思路:始终让l1是头节点小的那一个,然后拿l2的节点值依次与l1比较并插入l1中。最后返回l1。
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
}; ListNode* createlist(int n)//有头节点的
{
ListNode *head = (ListNode*)malloc(sizeof(ListNode));
ListNode *pre = head;
for (int i = ; i < n; i++)
{
ListNode *p = (ListNode*)malloc(sizeof(ListNode));
cin >> p->val;
pre->next = p;
pre = p;
}
pre->next = nullptr;
return head;
} ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode*temp;
ListNode*t;
if(l1== nullptr) return l2;
if(l2== nullptr) return l1;
if(l1->val>l2->val)//把头节点值小的放前面
{
t=l1;l1=l2;l2=t;
}
ListNode*head=l1;
while(l2!= nullptr)
{
if(l1->next== nullptr)
{
l1->next=l2;
return head;
}
else if(l1->val<=l2->val&&l1->next->val>=l2->val)
{
temp=l2->next;
t=l1->next;
l1->next=l2;
l2->next=t;
l1=l2;
l2=temp;
}
else l1=l1->next;
}
return head;
}
int main() {
ListNode* l1=createlist();
ListNode* l2=createlist();
ListNode *ans=mergeTwoLists(l1->next,l2->next);
//ans=ans->next->next;
while(ans!= nullptr)
{
cout<<ans->val<<endl;
ans=ans->next;
}
return ;
}
#leetcode刷题之路21-合并两个有序链表的更多相关文章
- leecode刷题(23)-- 合并两个有序链表
leecode刷题(23)-- 合并两个有序链表 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2-> ...
- #leetcode刷题之路4-寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2.请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)).你可以假设 nums1 和 nums2 不会 ...
- LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)
21. 合并两个有序链表 21. Merge Two Sorted Lists 题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. LeetCode ...
- Java实现 LeetCode 21 合并两个有序链表
21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...
- <每日 1 OJ> -LeetCode 21. 合并两个有序链表
题目: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1->1-> ...
- #leetcode刷题之路23-合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2- ...
- 力扣Leetcode 21. 合并两个有序链表
合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1-> ...
- [LeetCode题解]21. 合并两个有序链表 | 递归
解题思路 使用递归实现: 定义函数功能:合并两个有序链表,并返回链表的头 结束条件:两个链表其中一个为空,返回另一个链表 递推公式: l1.val < l2.val:l1.next = Merg ...
- LeetCode刷题--21.合并两个有序链表(简单)
题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 -> 2 -> 4 ,1 -> 3 -> 4 输出:1 ...
随机推荐
- path-to-regexp快速拆分 url 路径中的参数信息
介绍一个小工具 path-to-regexp 用于快速拆解url path中的部分,贴别适合restful接口中快速获取对应的实体参数 git地址可以参考 https://github.com/pil ...
- 【tips】编译epic异常解决
目标:编译 epic 异常信息一: No CMAKE_C_COMPILER could be found. No CMAKE_CXX_COMPILER could be found. 解决方法: ...
- android.view.WindowLeaked的解决办法
按字面了解,Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,为什么窗体会泄漏呢? 产生原因: 我们知道Android的每一个Activity都有个WindowManage ...
- 微信分享BUG
WXFileObject fileObject = new WXFileObject(); fileObject.setContentLengthLimit(1024 * 1024 * 10); fi ...
- sqlserver 查询表结构及字段说明
SELECT [Table Name] = OBJECT_NAME(c.object_id), [Column Name] = c.name, [Description] = ex.value FRO ...
- webpack笔记一 起步
webpack笔记一 起步 安装 对于大多数项目,我们建议本地安装(--save-dev).这可以在引入突破式变更(breaking change)版本时,更容易分别升级项目. 起步 初始化项目 mk ...
- SQLyog通过ssh隧道连接MySQL
1.简介 因为现在很多公司服务的数据库为了安全起见,都不允许直接连接其服务,而只能通过跳板机进行登陆到数据库.而ssh有一项非常有用的功能,即端口转发的隧道功能,让一些不安全的服务,像TCP.POP3 ...
- MapReduce Design Patterns(chapter 2 (part 3))(四)
Inverted Index Summarizations Pattern Description 反向索引模式在MapReduce分析中经常作为一个例子.我们将会讨论我们要创建的term跟标识符之间 ...
- Economy a Two-Edged Sword for Democrats
2017-05-03 12:05:07 https://www.usnews.com/news/blogs/ken-walshs-washington/2014/10/03/economy-a-two ...
- PHPmyadmin拿shell总结
PHPmyadmin修改用户密码 直接点击上面的localhost或者1270.0.1,出现用户一栏,点击修改即可 添加超级用户guetsec密码ooxx并且允许外连 GRANT ALL PRIVIL ...