算法:合并两个有序链表
生活随笔
收集整理的这篇文章主要介绍了
算法:合并两个有序链表
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目
合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
递归就是一个压栈和弹栈的过程,每次对一个节点进行压栈,然后重新链表的末尾开始弹栈,直到一直弹栈赋值到新链表的首节点。
class Solution { public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {ListNode* preHead = new ListNode(-1);ListNode* prev = preHead;while (l1 != nullptr && l2 != nullptr) {if (l1->val < l2->val) {prev->next = l1;l1 = l1->next;} else {prev->next = l2;l2 = l2->next;}prev = prev->next;}// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可prev->next = l1 == nullptr ? l2 : l1;return preHead->next;} };
总结
以上是生活随笔为你收集整理的算法:合并两个有序链表的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 面试题:回文数
- 下一篇: 算法:删除数组中的重复项