-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathmaxNonNegSubarray.cpp
More file actions
35 lines (29 loc) · 971 Bytes
/
maxNonNegSubarray.cpp
File metadata and controls
35 lines (29 loc) · 971 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// https://www.interviewbit.com/problems/max-non-negative-subarray/
vector<int> Solution::maxset(vector<int> &A) {
long long int start=0, end=0, ansStart=0, length=0, ansLength=0, ansEnd=-1, sumTillNow = INT_MIN, maxTillNow=INT_MIN;
int i=0;
while(i<A.size()){
if(A[i]>=0){
start = i;
sumTillNow =0;
length =0;
while(A[i]>=0 && i<A.size()){
sumTillNow +=A[i];
i++;
}
end = i-1;
if( ( sumTillNow>maxTillNow ) || ( sumTillNow==maxTillNow && end - start +1 < ansLength ) ){
ansStart = start;
ansEnd = end;
ansLength = start + end -1 ;
maxTillNow = sumTillNow;
}
}
i++;
}
vector <int> ans;
for(int i=ansStart; i<=ansEnd;i++){
ans.push_back(A[i]);
}
return ans;
}