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
"""
第一次:居然会想到用动态规划!感觉自己进步了hhhh。思路:定义dp,dp[i]=dp[i-1]+nums[i],如果和较nums[i]增大了,则对应位置保存,如果减小了,对应位置为nums[i]的值不变,最后返回dp中的最大值
"""
class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ if not nums: return None L = len(nums) dp = [0] * L dp[0] = nums[0] for i in range(1, L): if nums[i] + dp[i - 1] > nums[i]: dp[i] = nums[i] + dp[i - 1] else: dp[i] = nums[i] return max(dp)
"""Runtime: 48 ms, faster than 57.44% of Python online submissions for Maximum Subarray.
Memory Usage: 12.7 MB, less than 10.39% of Python online submissions for Maximum Subarray.
"""