题目
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
- 设置一个res空链表
- 每次对两个链表的头结点的val进行比较,把较小的那个放到res链表中,然后移动头结点
- 当某一个链表遍历结束时,跳出while,然后把另一个链表中剩余的结点一起放在res后面即可
代码
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回合并后列表
def Merge(self, pHead1, pHead2):
# write code here
res=ListNode(-1)
tmp=res
while(pHead1 and pHead2):
if(pHead1.val<pHead2.val):
tmp.next=pHead1
pHead1=pHead1.next
tmp=tmp.next
else:
tmp.next=pHead2
pHead2=pHead2.next
tmp=tmp.next
if pHead1==None:
tmp.next=pHead2
else:
tmp.next=pHead1
return res.next
其他方法
官方题解分为了迭代方法(也就是上述方法),和递归方法,递归这个东西还是不容易写出的,也很容易出错,个人觉得稳妥起见还是采用迭代方法比较好。