简单的dp.
class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ if not nums: return if len(nums) == 1: return nums[0] dp = [0] * len(nums) dp[0] = nums[0] for i, v in enumerate(nums[1:]): dp[i+1] = max(dp[i] + v, v) return max(dp)
其实不用dp这个数组,就维护一个最大值ret就行.
class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ if not nums: return if len(nums) == 1: return nums[0] pre_max=ret = nums[0] for v in nums[1:]: pre_max = max(pre_max + v, v) ret = max(ret, pre_max) return ret