leetcode 21
时间: 2023-10-03 09:06:48 浏览: 104
Leetcode
根据提供的引用内容,题目要求合并两个有序链表,返回一个新的升序链表。
解题思路是判断两个链表的头节点的值,将值小的节点作为结果链表的头节点,并递归地将较小节点的下一个节点与另一个链表进行合并。如果其中一个链表已经遍历完,则将另一个链表的剩余部分连接到结果链表的末尾。
下面是一个使用C语言实现的示例代码:
```c
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
if (list1 == NULL) {
return list2;
}
if (list2 == NULL) {
return list1;
}
if (list1->val < list2->val) {
list1->next = mergeTwoLists(list1->next, list2);
return list1;
} else {
list2->next = mergeTwoLists(list2->next, list1);
return list2;
}
}
```
这个代码通过比较两个链表的头节点的值,将较小的节点连接到结果链表上,并递归地调用函数处理剩余的节点。
在处理两个有序链表节点个数不相同时,只需在其中一个链表遍历完后,继续遍历另一个链表即可。
阅读全文