合并有序链表

合并两个排序的链表

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
全部评论

相关推荐

牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务