求子数组的最大和

来源:互联网 发布:python可以机器人 编辑:程序博客网 时间:2024/04/24 11:57

输入一个整型数组,数组里有整数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值及数组开始位置和结束位置。要求时间复杂度为O(n)。例如输入的数组为1-2310-472-5,和最大的子数组为310-472,因此输出该子数组的和18,数组开始位置和结束位置是26

解题思路:当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。

方法有蛮多种,可以以下两篇参考:http://luisliu.blog.51cto.com/883990/227200/

                                                             http://blog.csdn.net/yuucyf/article/details/6342421

 

 

原创粉丝点击