题解 | #连续子数组的最大和(二)#
连续子数组的最大和(二)
http://www.nowcoder.com/practice/11662ff51a714bbd8de809a89c481e21
1 感想
-
基础功很重要
-
首先梳理和的思路,然后就是具体序列开始/结束更新的位置
-
代码的基础功待加强,
本轮浪费时间的位置
2 code
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型vector
* @return int整型vector
*/
vector<int> FindGreatestSumOfSubArray(vector<int>& array) {
// write code here
vector<int> v;
if(array.size() == 0){
return v;
}
int i =0, localStart =0,localEnd =0 , gStart=0 ,gEnd =0;
int localSum = 0, globalSum = 0x80000000;//int32_min;
for( i = 0; i< array.size() ; i++){
if(localSum < 0)
{
localSum = array[i];
localStart = i;
localEnd= i;//VS的语法提醒也会有错误
}else{
localSum += array[i];
localEnd = i;
}
if(localSum>globalSum){
globalSum = localSum;
gStart = localStart;
gEnd = localEnd;
}
//以下更新条件错误,导致浪费5分钟
if(localSum == globalSum &&( (gEnd-gStart )< (localEnd - localStart)))
{
gEnd = localEnd;
gStart = localStart;
}//inner if
//多出来一个{ }后括号,一直在最后报未知的语法错误,浪费5分钟
}//end for
for(i= gStart;(i<=gEnd) && (gStart<=gEnd);i++)
{
v.push_back(array[i]);
}
return v;
}
};