返回一个整数数组中最大字数组的和,要求时间复杂度为O(n)

思路:

      刚拿到题目时,我和我的队友进行了头脑风暴。首先想到的是用复数把整个数组分块,然后判断每个复数和它后面的正数的和,如果和大于0,那么把这两个数加到总和里去,如果小于0,那么就舍去,记这个复数之前的整数和为SUM1;然后已该复数后面的正数开始,再重复上一步操作,以后的和一次记为SUM2,SUM3......,最后再比较SUM1,SUM2,SUM3......,最大数即为所求。后又经过推敲,这样的思路存在BUG,有可能这个复数会把最大和连续子数组分开。

      随后我们又经过了探讨,遍历三次,找出最大子数组,第一遍遍历,把整数数组分为正负相间的新数组,即连续的正数合并,连续的复数合并;第二遍遍历新的数组,思路是把复数和后面的正数相加,如果大于0,那么加到总和里面去,直到有一组正负数的和小于0,记前面的和为SUM1,依次遍历完整个数组,和分别为SUM1,SUM2,SUM3......,最后从SUM1,SUM2,SUM3.......中找出最大数。经过仔细推敲,这个思路仍然存在BUG,这样的算法会无限循环下去,找不到最大值。

     我和我的队友仍在努力寻找最好的算法,根据老师说的,最大整数的和很有可能出现在最大的整数附近,我们会朝着这个思路寻找算法。

                                                                                                                                          郭志鑫  宫文策

posted on 2014-03-19 13:40  不再犹豫xin  阅读(681)  评论(0)    收藏  举报