前言:
眼前看官们对“mergetwolists函数”可能比较关怀,你们都需要了解一些“mergetwolists函数”的相关内容。那么小编也在网摘上收集了一些关于“mergetwolists函数””的相关知识,希望姐妹们能喜欢,我们快快来了解一下吧!【程序员每日一练】
题目名称:合并两个有序链表(Merge Two Sorted Lists)
题目描述:
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入: 1->2->4, 1->3->4
输出: 1->1->2->3->4->4
解题思路:
这道题可以使用迭代法来解决。我们可以定义一个虚拟头节点,将两个链表的节点一一对应地插入到这个虚拟头节点的后面,最后返回虚拟头节点的下一个节点即可。
代码实现:
以下是合并两个有序链表的C代码实现:
#include
#include
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode dummy;
struct ListNode *p = &dummy;
while (l1 && l2) {
if (l1->val < l2->val) {
p->next = l1;
l1 = l1->next;
} else {
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
p->next = l1 ? l1 : l2;
return dummy.next;
}
python语言:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode(0) # 定义虚拟头节点
p = dummy # 定义指针,指向虚拟头节点
while l1 and l2:
if l1.val < l2.val:
p.next = l1
l1 = l1.next
else:
p.next = l2
l2 = l2.next
p = p.next # 移动指针,指向下一个节点
p.next = l1 or l2 # 将剩余的节点尾插在虚拟头节点的后面
return dummy.next # 返回虚拟头节点的下一个节点
喜欢的话欢迎点个关注,谢谢!
标签: #mergetwolists函数