• 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

  • 相关阅读:
    杨辉三角1
    岛屿与周长
    什么是计算机语言
    爬虫爬取视图片
    爬虫爬取文字生成词云
    英文词频统计
    回溯法~0-1背包的实现
    java Swing图形化界面
    棋盘覆盖
    敏捷软件开发 10~12章
  • 原文地址:https://www.cnblogs.com/bonelee/p/8876644.html
Copyright © 2020-2023  润新知