两个有序链表的合并pta新表不含重复元素
时间: 2023-09-05 07:13:38 浏览: 61
可以使用归并排序的思想,不断比较两个链表的头结点,将较小的结点放入新链表中,直到其中一个链表为空。最后将另一个非空链表接到新链表的末尾即可。需要注意的是,由于题目要求新表不含重复元素,因此需要在合并时判断两个结点的值是否相等,如果相等则只将其中一个结点加入新链表。
下面是示例代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode()
cur = dummy
while l1 and l2:
if l1.val < l2.val:
if not cur.next or cur.next.val != l1.val:
cur.next = l1
cur = cur.next
l1 = l1.next
elif l1.val > l2.val:
if not cur.next or cur.next.val != l2.val:
cur.next = l2
cur = cur.next
l2 = l2.next
else:
if not cur.next or cur.next.val != l1.val:
cur.next = l1
cur = cur.next
l1 = l1.next
l2 = l2.next
if l1:
cur.next = l1
if l2:
cur.next = l2
return dummy.next
```
其中,dummy 节点用于简化代码实现,cur 节点指向新链表的尾结点,每次比较后将较小的结点加入新链表中,同时需要判断结点值是否相等。最后将非空的链表接到新链表的末尾即可。