LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)
/*** 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) {//如果两个链表都空if(l1 == NULL && l2 == NULL){return NULL;}//如果l1空,l2不空if(l1 == NULL && l2 != NULL){return l2;}//如果l2空,l1不空if(l2 == NULL && l1 != NULL){return l1;}//如果两个链表都不空struct ListNode* l3 = NULL;if(l1 != NULL && l2 != NULL){if(l1->val <= l2->val) {l3 = l1; l1 = l1->next;}else {l3 = l2; l2 = l2->next;}}struct ListNode* end = l3;while(l1 != NULL && l2 != NULL){if(l1->val <= l2->val){end->next = l1;l1 = l1->next;}else{end->next = l2;l2 = l2->next;}end = end->next;}if(l1 == NULL && l2 != NULL){end->next = l2;}if(l2 == NULL && l1 != NULL){end->next = l1;}return l3;}
};void trimLeftTrailingSpaces(string &input) {input.erase(input.begin(), find_if(input.begin(), input.end(), [](int ch) {return !isspace(ch);}));
}void trimRightTrailingSpaces(string &input) {input.erase(find_if(input.rbegin(), input.rend(), [](int ch) {return !isspace(ch);}).base(), input.end());
}vector<int> stringToIntegerVector(string input) {vector<int> output;trimLeftTrailingSpaces(input);trimRightTrailingSpaces(input);input = input.substr(1, input.length() - 2);stringstream ss;ss.str(input);string item;char delim = ',';while (getline(ss, item, delim)) {output.push_back(stoi(item));}return output;
}ListNode* stringToListNode(string input) {// Generate list from the inputvector<int> list = stringToIntegerVector(input);// Now convert that list into linked listListNode* dummyRoot = new ListNode(0);ListNode* ptr = dummyRoot;for(int item : list) {ptr->next = new ListNode(item);ptr = ptr->next;}ptr = dummyRoot->next;delete dummyRoot;return ptr;
}string listNodeToString(ListNode* node) {if (node == nullptr) {return "[]";}string result;while (node) {result += to_string(node->val) + ", ";node = node->next;}return "[" + result.substr(0, result.length() - 2) + "]";
}int main() {string line;while (getline(cin, line)) {ListNode* l1 = stringToListNode(line);getline(cin, line);ListNode* l2 = stringToListNode(line);ListNode* ret = Solution().mergeTwoLists(l1, l2);string out = listNodeToString(ret);cout << out << endl;}return 0;
}
LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)相关推荐
- [递归|迭代] leetcode 21 合并两个有序链表
[递归|迭代] leetcode 21 合并两个有序链表 1.题目 题目链接 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2 ...
- LeetCode 21. 合并两个有序链表(链表)
上一篇博客:LeetCode 20. 有效的括号(栈.字符串) 写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode ...
- Java实现 LeetCode 21 合并两个有序链表
21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...
- LeetCode 21合并两个有序链表22括号生成
微信搜索bigsai,回复进群,加入打卡.维护不易,欢迎点赞支持! 合并两个有序列表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...
- 【Java】leetCode 21 合并两个有序链表
题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...
- LeetCode 21. 合并两个有序链表(单链表)
文章目录 1. 题目信息 2. 解题 1. 题目信息 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例:输入:1->2->4, 1-> ...
- leetcode - 21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1->2- ...
- leetcode 21.合并两个有序链表
题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-> ...
- LeetCode 21 ——合并两个有序链表
1. 题目 2. 解答 新建一个带有哨兵结点的链表,依次比较两个有序链表的结点值,将较小值的结点插入到新链表后面.直到其中一个比较完毕,将另一个链表剩余的结点全部放到新链表最后面即可.最后,可以删除哨 ...
最新文章
- 中间省略_手机号码中间4位设置为*号,我用了5小时,可同事8秒就搞定了
- 浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
- python实现序列数据预处理_Python笔记:序列处理函数
- php disable classes,PHP安全配置基础教程(3)
- 绑定方法和非绑定方法
- python处理excel可视化_python如何将excel数据处理可视化
- 计算机架构专业排名,全国大学计算机专业排名(转贴)
- python编写爬虫代码_python编写简单爬虫资料汇总
- AcWing 101. 最高的牛
- fcq java_Java设计模式百例 - 解释器模式
- 华为 “Telnet” 登录设备
- Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)
- B2C电商系统源码 在线商城源码
- bat 一键清理系统垃圾的修改
- DriverFinder(电脑驱动升级软件)官方正式版V4.1.0.0 | 最好的电脑驱动软件之一 | win10更新驱动用什么软件
- C盘无法扩展卷(因后面有个恢复分区)——删除恢复分区
- boost电路公式详解
- latex 花体之英文字母
- 移动光猫RAISECOM的配置方法
- 计算机老师感言,信息技术教师感言