• leetcode 53. Maximum Subarray


    Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

    Example:

    Input: [-2,1,-3,4,-1,2,1,-5,4],
    Output: 6
    Explanation: 
    [4,-1,2,1] has the largest sum = 6.

    Follow up:

    If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

    贪心:
    class Solution(object):
        def maxSubArray(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
    
            ans = s = nums[0]
            for i in xrange(1, len(nums)):
                if s > 0:
                    s = nums[i]+s                
                else:
                    s = nums[i]
                ans = max(s, ans)
            return ans
    

    DP解法://dp[i] means the maximum subarray ending with A[i];

    class Solution(object):
        def maxSubArray(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            dp = [0]*len(nums)
            ans = dp[0] = nums[0]
            for i in xrange(1, len(nums)):
                dp[i] = max(dp[i-1]+nums[i], nums[i])
                ans = max(ans, dp[i])
            return ans
    

    递归解法:

    TODO

  • 相关阅读:
    swagger生成接口文档
    二分查找通用模板
    go-json技巧
    【Go】获取用户真实的ip地址
    数据库储存时间类型
    密码加密:md5/sha1 +盐值
    参数里时间格式的转换
    不好定位的元素定位
    vim编辑器
    ps -ef | grep php kill -9
  • 原文地址:https://www.cnblogs.com/bonelee/p/8876644.html
Copyright © 2020-2023  润新知