擅长:python、mysql、java
<p>恕我直言,这很管用,而且是Python式的。在</p>
<pre><code>def maxSubArray(seq):
all_sum = cur_sum = 0
all_beg = cur_beg = 0
all_end = 0
for cur_end, x in enumerate(seq, 1):
if cur_sum + x > 0:
cur_sum += x
if all_sum < cur_sum:
all_sum = cur_sum
all_beg, all_end = cur_beg, cur_end
else:
cur_sum = 0
cur_beg = cur_end
return all_sum, all_beg, all_end
</code></pre>
<p>算法是一样的。对于在这里结束的数组(<code>cur_</code>)和整体(<code>all_</code>),有sum、起始索引和结束索引。在</p>
<p>编辑:注意这里的结束索引是排他的。在</p>
<p>另外,如果有多个最优子阵列,则返回第一个和最长的子阵列。在</p>