第二种思路比较巧妙,只需遍历数组一次。每当访问一个数,这个数和之前的累加和相加,构成新的累加和。如果这个新的和是正数,那么这个数对求最大和是有帮助的,负数是没有帮助的。所以,如果新的和是负数,我们把累加和清零。如果全部是非正数,那么需特殊处理,找出所有数中最大的那一个,返回即可。
微软,Google面试题 (3) —— 求最大子数组和
最新推荐文章于 2017-09-05 21:03:25 发布
第二种思路比较巧妙,只需遍历数组一次。每当访问一个数,这个数和之前的累加和相加,构成新的累加和。如果这个新的和是正数,那么这个数对求最大和是有帮助的,负数是没有帮助的。所以,如果新的和是负数,我们把累加和清零。如果全部是非正数,那么需特殊处理,找出所有数中最大的那一个,返回即可。