classSolution: defmaxSubArray(self, nums: List[int]) -> int: ifnot nums: return0 result = nums[0] f = [nums[0]] for i inrange(1, len(nums)): tmp = f[i-1] + nums[i] if tmp >= nums[i]: f.append(tmp) else: f.append(nums[i]) returnmax(f)
考虑到题目中只需要求出最大值即可,可以对空间复杂度做一些优化
1 2 3 4 5 6 7 8 9 10
class Solution: def maxSubArray(self, nums: List[int]) ->int: if not nums: return0 result= nums[0] f = nums[0] for i inrange(1, len(nums)): f =max(f+nums[i], nums[i]) result=max(f, result) returnresult
classSolution: defmaxSubArray(self, nums: List[int]) -> int: ifnot nums: return0 result = nums[0] f = nums[0] maxIndex = 0 for i inrange(1, len(nums)): tmp = f + nums[i] if tmp >= nums[i]: f = tmp else: f = nums[i] if f > result: result = f maxIndex = i # print(f,maxIndex) resultList = [] for i inrange(maxIndex, -1, -1): ifsum(resultList) == result: print(resultList) break else: resultList.insert(0, nums[i]) return result