本文摘自php中文网,作者小云云,侵删。
求最大连续子序列的和是一个很经典很古老的面试题了,本文我们就和大家分享关于用Python语言描述最大连续子序列和方法,希望能帮助到大家。1.问题描述
假设有一数组(python里为list啦)[1,3,-3,4,-6,-1],求数组中最大连续子序列的和。例如在此数组中,最大连续子序列的和为5,即1+3+(-3)+4 = 5
2.O(n2)的解法
最简单粗暴的方式,双层循环,用一个maxsum标识最大连续子序列和。然后每次判断更新。没有太多可以说的,直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
运行结果
1 |
|
3.O(n)解法
在任何讲动态规范的地方都能找到求最大连续子序列和的例子。具体来说,假设数组为a[i],因为最大连续的子序列和必须是在位置0-(n-1)之间的某个位置结束。那么,当循环遍历到第i个位置时,如果其前面的连续子序列和小于等于0,那么以位置i结尾的最大连续子序列和就是第i个位置的值即a[i]。如果其前面的连续子序列和大于0,则以位置i结尾的最大连续子序列和为b[i] = max{ b[i-1]+a[i],a[i]},其中b[i]就是指最大连续子序列的和。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
运行结果
1 |
|
以上内容就是用Python语言描述最大连续子序列和教程,希望对能帮助到大家。
相关推荐:
最大连续子序列和问题
完全掌握 Python
python版简单工厂模式的介绍
以上就是用Python语言描述最大连续子序列和的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Python中json模块和pickle模块的简单介绍(附示例)
Python中hasattr(),getattr(),setattr()的用法介绍(代码示例)
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。