leetcode 学习打卡

043-字符串相乘

题目描述
  • 给定一个 没有重复 数字的序列,返回其所有可能的全排列。
代码(python)
class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        # return str(int(num1) * int(num2))
        if num1 == "0" or num2 == "0": return "0"
        # results = "0" * (len(num1) + len(num2))
        results = []
        for i in range(len(num1) + len(num2)):
            results.append(0)
        for i in range (len(num1) -1, -1, -1):
            for j in range(len(num2) -1, -1, -1):
                p1, p2 = i + j, i + j + 1
                mul = (ord(num1[i]) - ord('0')) * (ord(num2[j]) - ord('0'))
                sums = mul + results[p2]
                results[p2] = sums % 10
                results[p1] = results[p1] + sums // 10
        cur = 0
        while   cur < len(results) and results[cur] == 0:
            cur = cur + 1
        #去除前导0
        resultstring = ''
        for  i  in  range(cur,len(results)):
            resultstring = resultstring + str(results[i])
        if  resultstring == '':
            return  '0'
        return   resultstring

046-全排列

题目描述
  • 给定一个 没有重复 数字的序列,返回其所有可能的全排列。
代码(python)
class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def dfs(nums, size, depth, path, state, res):
            if depth == size:
                res.append(path)
                return

            for i in range(size):
                if ((state >> i) & 1) == 0:
                    dfs(nums, size, depth + 1, path + [nums[i]], state ^ (1 << i), res)

        size = len(nums)
        if size == 0:
            return []

        state = 0
        res = []
        dfs(nums, size, 0, [], state, res)
        return res

053-最大子序和

题目描述
  • 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
代码(python)
class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        if not nums: return None
        # dp = [0 for x in range(0, len(nums))]
        # dp[0] = nums[0]
        # for i in range(1,len(nums)):
        #     if dp[i-1] <= 0:
        #         dp[i] = nums[i]
        #     else:
        #         dp[i] = dp[i-1] + nums[i]
        # return max(dp)
        for i in range(1, len(nums)):
            nums[i] += max(nums[i-1],0)
        return max(nums)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值