力扣:合并两个有序链表

该题目是合并2个有序的链表。主要实现思路如下:

  1. 链表是有序的。比较的时候只要list1的值大于list2的中的就一直插入数据。反之亦然。
  2. 要用链表才能通过,不能使用数组
  3. 注意空链表以及终止条件
# Definition for singly-linked list.
class ListNode:
	def __init__(self, val=0, next=None):
	   	self.val = val
        self.next = next
class Solution:
    def appendList(self,list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        while list2:
            list1.next = ListNode(list2.val)
            list1 = list1.next
            list2 = list2.next

    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        if not list2:
            return list1
        if not list1:
            return list2
        if list1.val > list2.val:
            r = m = ListNode(list2.val)
            list2 = list2.next
            if not list2:
                self.appendList(m,list1)
                return r
        else:
            r = m = ListNode(list1.val)
            list1 = list1.next
        while list1:
            while list1.val > list2.val:
                m.next = ListNode(list2.val)
                m = m.next
                list2 = list2.next
                if not list2:
                    self.appendList(m,list1)
                    return r
            m.next = ListNode(list1.val)
            m = m.next
            list1 = list1.next
        self.appendList(m,list2)
        return r

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值