LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)

xiaoxiao2025-03-13  12

题目描述

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4

解题思路:

这里使用递归的方法。构造一个新的ListNode为tmp,当某个链表为空了,就返回另一个。核心是比较当前两个节点值大小,如果l2的小,那么对于l2的下一个节点和l1调用递归函数,将返回值赋值给 tmp->next ,然后返回tmp;否则就对于l1的下一个节点和l2调用递归函数,将返回值赋值给 tmp->next ,然后返回tmp,依次递归下去。

代码展示:

/** * 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) return l2; if (l2 == NULL) return l1; if (l1->val > l2->val) { ListNode *tmp = l2; tmp->next = mergeTwoLists(l1, l2->next); return tmp; } else { ListNode *tmp = l1; tmp->next = mergeTwoLists(l1->next, l2); return tmp; } } };
转载请注明原文地址: https://www.6miu.com/read-5025809.html

最新回复(0)