• 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
    }

    分治法

  • 相关阅读:
    起点中文网小说爬取-etree,xpath,os
    拉勾网爬虫--待改正
    破解有道词典翻译-版本二
    pycharm错误:11001
    自动化selenium 测试之道(一)
    valgrind 详细说明
    sar命令使用详解
    Linux CPU实时监控mpstat命令详解
    Linux IO实时监控iostat命令详解
    RPM安装命令总结
  • 原文地址:https://www.cnblogs.com/liushoudong/p/13511770.html
Copyright © 2020-2023  润新知