刷力扣热题–第九天:53.最大字数组和
菜鸟第九天开始奋战敲代码,持之以恒,见证成长
1.题目简介
2.题目解答
和前两天做的前缀和有点像,使用字典存储前i项和,之后遍历,求下标j-i的最大值.
超时了,行吧,确实时间复杂度为O(N),空间复杂度为O(N),那就退而求其次,用之前做的那种做法去做,找最大值,如果后面的加前面的,变小了,就替换,不然的话就把当前值加上,之后更新最大值.其实这种做法在之前的题目上是会出bug的,128.最长子序列和这道题感觉有点类似.
3.心得体会
自己的问题感觉还是数据结构这里比较薄弱,也是刷题少,也是数据结构给忘了,导致做题的思维连贯性不强,最近学会了字典的的map结构,之后的就慢慢再积累吧.
代码在这里:
#最终结果
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
max_sum = max(nums)
j = 0
for i in nums:
if j+i < i:
j = i
else:
j += i
max_sum = max(max_sum,j)
return max_sum
#暴力求解--也想看看大佬能不能再次进行精简
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
map_add = {}
sum_temp = 0
for i in range(len(nums)):
sum_temp += nums[i]
map_add[i] = sum_temp
max_sum = max(list(map_add.values()))
max_sum = max(max_sum,max(nums))
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
max_sum = max(max_sum,map_add[j]-map_add[i])
return max_sum
4.做题时长
7月12日17:10-18:10 一小时!但写个小Volg还是挺久的,就当记日记了~