LEETCODE 01

LEETCODE 01

02 两数相加

tag:链表
题目链接
解法一:迭代

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        ###########迭代
        dummy=p=ListNode(None)
        s=0
        while l1 or l2 or s:
             s=(l1.val if l1 else 0)+(l2.val if l2 else 0)+s
            p.next=ListNode(s%10)
            p=p.next
            s=s//10
            l1=l1.next if l1 else None
            l2=l2.next if l2 else None

        return dummy.next

解法二:递归

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        ###########递归
        s=0
        def dfs(l1,l2,s):
            if not l1 and not l2 and not s: return None
            s=(l1.val if l1 else 0) + (l2.val if l2 else 0)+s
            node=ListNode(s%10)
            node.next=dfs(l1.next if l1 else None, l2.next if l2 else None, s//10)
            return node
        return dfs(l1,l2,s)

时间复杂度:O(max(m,n))
空间复杂度:O(max(m,n))

04 寻找两个正序数据的中位数

寻找两个正序数据的中位数
暴力解法

class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
        m=nums1+nums2
        n=sorted(m)
        if len(n)%2 ==0:
            return (n[int(len(n)/2)]+n[int(len(n)/2-1)])/2
        else:
            return n[int(len(n)/2)]

05 最长回文子串

最长回文子串

class Solution:
    def longestPalindrome(self, s: str) -> str:

        ##暴力解法,超时
        if len(s)<2:
            return s
        maxlen=1
        begin=0
        #检查子串是否为回文子串
        def issame(left,right):
            while left<right:
                if  s[left]!=s[right]:
                    return False
                left+=1
                right-=1
            return True
        #找到所有子串
        for i in range(len(s)-1):
            for j in range(i+1,len(s)):
                if j - i + 1 > maxlen and issame(i,j):
                    begin=i
                    maxlen=j-i+1
        return s[begin:begin+maxlen]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值