【代码随想录】刷题记录(83)-最大子数组和
题目描述:
给你一个整数数组 nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组
是数组中的一个连续部分。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
输入:nums = [1] 输出:1
示例 3:
输入:nums = [5,4,-1,7,8] 输出:23
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
我的作答:
根据贪心算法的原理,局部最优解推出全局最优解。那么,只要加上下一个数比当前累加值大,就立即更新加上下一个值的结果;而如果下一个数是负数,那么立马归零,表示这个数打断了子序列(因为一旦加上一个负数,只会一直“拖后腿”)
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result = -float('inf') #定义无穷小
count = 0
for i in range(len(nums)):
count += nums[i]
if count>result:
result = count
if count<0:
count = 0
return result
参考代码:
差不多