前言
通过leetcode记录自己每天坚持刷题,以此监督自己的学习。不能放假了就懈怠😁
题目简介
题目传送地:剑指 Offer 42. 连续子数组的最大和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
示例1:
输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为6。
解析
这题很简单,标准贪心思想,遍历数组,每次都取最大值,如何和为负了就重新加
代码
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
curr_ans=nums[0]
ans=max(nums)
for i in range(1,len(nums)):
if curr_ans<=0:
curr_ans=0
curr_ans+=nums[i]
ans=max(ans,curr_ans)
return ans