美文网首页
最大连续子序列问题

最大连续子序列问题

作者: 大脸猫猫脸大 | 来源:发表于2019-08-29 16:13 被阅读0次

题目

53. Maximum Subarray

解法

方法一

curSum为包含当前值的连续序列最大值,如对序列nums[:i]curSum和中必定包含nums[i]

    def maxSubArray(self, nums):
        curSum = maxSum = nums[0]
        for num in nums[1:]:
            curSum = max(num, curSum + num)
            maxSum = max(maxSum, curSum)
        return maxSum

思路相同,另一种更为简洁的写法

    def maxSubArray(self, nums: List[int]) -> int:
        for i in range(1, len(nums)):
            if nums[i-1] > 0:
                nums[i] += nums[i-1]
        return max(nums)

方法二

序列nums[k]可分为nums[0,1,...,s-1,s]nums[s+1,s+2,...k-2,k-1]两部分。
我们可以轻易求出前半部分nums[:s]的值,则后部分nums[s+1:k]=nums[:k]-nums[:s]

    def maxSubArray(self, nums) -> int:
        res = nums[0]
        msub = min(nums[0], 0)
        for i in range(1, len(nums)):
            new = nums[i - 1] + nums[i]
            res = max(new - msub, res, nums[i])
            msub = min(new, msub)
            nums[i] = new
        return res

相关文章

  • 动态规划之"最大连续子序列"

    最大连续子序列问题 问题定义: 给定K个整数的序列{ N1, N2, ..., Nk },其任意连续子序列可表示为...

  • 算法(04)动态规划

    零钱问题 背包问题 最长公共子序列 最长公共子串 最长上升子序列 最大连续子序列和

  • 最大连续子序列问题

    题目 解法 方法一 curSum为包含当前值的连续序列最大值,如对序列nums[:i],curSum和中必定包含n...

  • 算法优化例子

    最大连续子序列和问题:给定(可能是负的)整数序列,寻找(并标识)的值为最大的序列。如果所有的整数都是负的,那么最大...

  • 从最大连续和问题看算法的时间复杂度

    参考紫书8.1章节。最大连续和问题 在给定序列中找到最大连续和,该问题最简单的解答思路是将所有子序列的和求出,并找...

  • 机试常用算法和题型-动态规划专题

    动态规划专题 最大连续子序列求和 方法二:很巧妙 最大加权子矩阵-矩阵压缩 最长不下降子序列 最长不下降子序列应用...

  • [python] 最大连续子序数之和

    问题:连续子序列最大和给定一个数字序列[A1A2A3…An],求i,j(1<=i<=j<=n)使得Ai…Aj和最大...

  • 53. Maximum Subarray

    求一个给定序列的最大连续子序列和,如[-2,1,-3,4,-1,2,1,-5,4]的最大连续子序列为[4, -1,...

  • D - 4 HDU - 2845

    (简单dp???excuse??) dp:最大不连续子序列和

  • 30、最大连续子序列的和

    题目描述求最大连续子序列的和,序列中包含正负数。例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大...

网友评论

      本文标题:最大连续子序列问题

      本文链接:https://www.haomeiwen.com/subject/yeviectx.html