21. 合并两个有序链表
时间:2019-08-26
本文章向大家介绍21. 合并两个有序链表,主要包括21. 合并两个有序链表使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
/* 解题思路: 新建一个链表,然后比较两个链表中的元素值,把较小的那个链到新链表中, 由于两个输入链表的长度可能不同,所以最终会有一个链表先完成插入所有元素, 则直接另一个未完成的链表直接链入新链表的末尾。 */ #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *dummy = new ListNode(-1), *cur = dummy; while (l1 && l2) { if (l1->val < l2->val) { cur->next = l1; l1 = l1->next; } else { cur->next = l2; l2 = l2->next; } cur = cur->next; } cur->next = l1 ? l1 : l2; return dummy->next; } }; ListNode* CreateListNode(int arr[], int n) { ListNode* head; head = new ListNode(arr[0]); ListNode* cur; cur = head; for (int i = 1; i < n; i++) { cur->next = new ListNode(arr[i]); cur = cur->next; } return head; } int main() { int n, m; cin >> n >> m; int i; int a[100]; for (i = 0; i < n; i++) { scanf("%d", &a[i]); } ListNode* head = CreateListNode(a, n); int j; int b[100]; for (j = 0; j < m; j++) { scanf("%d", &b[j]); } ListNode* head1 = CreateListNode(b, m); ListNode* result = Solution().mergeTwoLists(head, head1); while (result != NULL) { printf("%d ", result->val); result = result->next; } system("pause"); return 0; }
原文地址:https://www.cnblogs.com/277223178dudu/p/11410966.html
- 关闭与恢复visual studio实时调试器
- linux系统下的权限知识梳理
- c#如何启动/干掉/查找 进程
- Android中Application的应用
- 孟昭莉博士:大数据大道之行
- .NET Core系列 :3 、使用多个项目
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
- ubuntu系统升级记录
- .NET Core系列 :4 测试
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像
- centos下部署NTP时间服务器同步环境记录
- ASP.NET MVC扩展库
- centos7.2部署vnc服务记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- String - 28. Implement strStr()
- Subsequence - 187. Repeated DNA Sequences
- Subsequence - 392. Is Subsequence
- parentheses - 241. Different Ways to Add Parentheses
- parentheses - 32. Longest Valid Parentheses
- parentheses - 22. Generate Parentheses
- palindrome - 132. Palindrome Partitioning II
- palindrome - 131. Palindrome Partitioning
- Parentheses - 20. Valid Parentheses
- Palindrome - 9. Palindrome Number
- Palindrome - 5. Longest Palindromic Substring
- Palindrome - 125. Valid Palindrome
- Sliding Window - 395. Longest Substring with At Least K Repeating Characters
- Sliding Window - 340. Longest Substring with At Most K Distinct Characters
- Sliding Window - 3. Longest Substring Without Repeating Characters