给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],
来源:力扣(LeetCode) |
#看了思想之后,自己写的
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
sum = [nums[0]]
max = nums[0]
for i in range(1,len(nums)):
if(sum[i-1] < 0):
sum.append(nums[i])
else:
sum.append(sum[i-1] + nums[i])
max = max if max >= sum[i] else sum[i]
return max
class Solution:
def maxSubArray(self, nums: 'List[int]') -> 'int':
n = len(nums)
max_sum = nums[0]
for i in range(1, n):
if nums[i - 1] > 0:
nums[i] += nums[i - 1]
max_sum = max(nums[i], max_sum)
return max_sum
作者:LeetCode
链接:https://leetcode-cn.com/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
上面那个是官方的,自己的和官方的区别是:空间复杂度
官解在原数组上进行修改 降低了空间复杂度
分治法先不看了,等后面返回来再看
https://leetcode-cn.com/problems/maximum-subarray/solution/zui-da-zi-xu-he-by-leetcode/