合并有序链表

合并两个排序的链表

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

相关推荐

06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
Twilight_mu:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

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