找出和最大的子序列(动态规划 O(n))
Posted smile-yan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出和最大的子序列(动态规划 O(n))相关的知识,希望对你有一定的参考价值。
题目描述
给一个数组,寻找其中和最大的子串
输入
[1, -10, 5, 4, -8, 10, -20]
输出
最大子串的和
11
愚蠢的解法先学一下 O(n^2)
我一直在纠结纠结如何 O ( n ) O(n) O(n) ,因为我做过这类题,不应该这么固执的,现在反思一下,先写个百分百超时的吧,拿不到满分应该可以拿40分。
向以前的算法老师致歉
这种方法就是求出所有的子串,再找到最大的。
O(n) 也比较简单
基本思路就是一次遍历,如果子串的和大于0,那么这个子串就可以继续加后面的数,如果这个子串的和为负数的,那么就放弃整个子串。
ary = [1, -10, 5, 4, -8, 10, -20]
maxOne = ary[0]
total = ary[0]
for i in range(1, len(ary)):
total += ary[i]
if (total < 0):
total = 0
if (maxOne < total):
maxOne = total
maxOne
总结
沉着、冷静,稳住心态。被这么简单的题目难倒了,吐了
Smileyan
2021.9.7 17:43
以上是关于找出和最大的子序列(动态规划 O(n))的主要内容,如果未能解决你的问题,请参考以下文章