剑指offer之合并两个排序的链表(Python)

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。


思路:初始化两个链表头,其中一个表头用以记录两个单调递增链表比较后的结果,另一个用以返回结果。

用while循环:

①如果两个链表不为空,比较进行,并将小的那个赋给合并的链表头。小表头继续走一步,合并表头继续走一步。

②如果两个链表有其一为空,那么跳出循环,并将另一不为null的链表的后续部分赋给合并链表。

代码如下:

# -*- coding: utf-8 -*-
class ListNode():
    def __init__(self,x):
        self.val = x
        self.next = None

def function(listNode1,listNode2):
    p = merge = ListNode(0)
    while listNode1 and listNode2:
        if listNode1.val > listNode2.val:
            merge.next = listNode2
            listNode2 = listNode2.next
        elif listNode2.val >= listNode1.val:
            merge.next = listNode1
            listNode1.next = listNode1
        merge.next = merge
    #注意:当由于其中一链表listNode1或者listNode2为null,导致跳出while循环时,
    #此时,还需要将另一不为null的链表的后续部分赋给合并链表。 
    merge = listNode1 or listNode2
    return p.next



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值