将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间
时间: 2023-04-27 22:06:50 浏览: 143
这道题目可以使用双指针的方法来解决。我们可以定义两个指针分别指向两个链表的头节点,然后比较两个节点的值的大小,将较小的节点插入到结果链表的头部。然后将指向较小节点的指针向后移动一位,继续比较两个节点的值的大小,直到其中一个链表的节点全部插入到结果链表中。最后,将剩余的节点插入到结果链表的头部即可。
需要注意的是,由于要求结果链表是非递增的,因此在插入节点时需要将节点插入到结果链表的头部,而不是尾部。
代码如下:
```python
def merge(l1, l2):
p1, p2 = l1, l2
while p1 and p2:
if p1.val <= p2.val:
p1.next, p1, p2 = p2, p1.next, p2.next
else:
p2.next, p1, p2 = p1, p1.next, p2.next
return l1 if l1.val <= l2.val else l2
```
其中,p1和p2分别指向两个链表的头节点,while循环中比较两个节点的值的大小,将较小的节点插入到结果链表的头部。最后,返回较小节点所在的链表的头节点即可。
阅读全文