合并有序链表

合并两个排序的链表

http://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337

递归版本:

class Solution:
    # 返回合并后列表
    def Merge(self, pHead1, pHead2):
        # 递归结束条件就是有一个到头了,返回不是None的那个就好了
        if not pHead1 or not pHead2: return pHead1 if pHead1 else pHead2
        # 让phead1指向小的,有必要的话交换
        if pHead1.val > pHead2.val: pHead1,pHead2 = pHead2,pHead1
        # 递归步骤
        pHead1.next = self.Merge(pHead1.next,pHead2)
        return pHead1

非递归版本:

class Solution:
    # 返回合并后列表
    def Merge(self, pHead1, pHead2):
        # write code here
        p = ListNode(-1)
        ans = p
        while pHead1 and pHead2:
            if pHead1.val <= pHead2.val:
                p.next = pHead1
                pHead1 = pHead1.next
            else:
                p.next = pHead2
                pHead2 = pHead2.next
            p = p.next

        p.next = pHead1 if pHead1 else pHead2
        return ans.next
全部评论

相关推荐

点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
6 收藏 评论
分享
牛客网
牛客企业服务