zoukankan      html  css  js  c++  java
  • leetcode53:最大子序和 动规+分治

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    示例:

    输入: [-2,1,-3,4,-1,2,1,-5,4]
    输出: 6
    解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
    进阶:

    如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。

    动态规划

    ========================================Python=======================================

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

    =========================================Go=========================================

    func maxSubArray(nums []int) int {
        if len(nums) < 1{
            return 0
        }
        dp := make([]int, len(nums))
        dp[0] = nums[0]
        for i := 1; i < len(nums); i++ {
            if dp[i-1] < 0 {
                dp[i] = nums[i]
            } else {
                dp[i] = dp[i-1] + nums[i]
            }
        }
        result := -1 << 31
        for _, k := range dp {
            result = max(result, k)
        }
        return result 
    }
    
    func max(a, b int) int {
        if a > b {
            return a
        }
        return b
    }

    分治法

  • 相关阅读:
    HTML标签大全
    PHP实现QQ第三方登录代码
    php链接access并查询列出
    php连接Access数据库
    获取文件信息
    动态网页转伪静态
    asp读取指定目录下的文件名
    如何设置VBA代码的密码?如何取消VBA代码的密码?
    ol序号并在序号加背景色
    免费ASP空间
  • 原文地址:https://www.cnblogs.com/liushoudong/p/13511770.html
Copyright © 2011-2022 走看看