给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果存在多个答案,请返回字典序最小的)
样例
样例 1:
输入: [-3, 1, 3, -3, 4]
输出: [1, 4]
样例 2:
输入: [0, 1, 0, 1]
输出: [0, 3]
解释: 字典序最小.
class Solution {
public:
/*
* @param A: An integer array
* @return: A list of integers includes the index of the first number and the index of the last number
*/
vector<int> continuousSubarraySum(vector<int> &A) {
// write your code here
vector<int>res(2,0);
int start=0;
int end=0;
int sum=0;
int maxs=INT_MIN;
for (int i = 0; i < A.size(); i++) {
/* code */
if(sum<0)
{
sum=A[i];
start=i;
end=i;
}
else
{
sum+=A[i];
end=i;
}
if(sum>maxs)
{
maxs=sum;
res[0]=start;
res[1]=end;
}
}
return res;
}
};