forked from taruneshrai/Array
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMax_CircularSubarraySum
More file actions
33 lines (32 loc) · 815 Bytes
/
Max_CircularSubarraySum
File metadata and controls
33 lines (32 loc) · 815 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
class Solution{
public:
// arr: input array
// num: size of array
//Function to find maximum circular subarray sum.
int NormalSubarraySum (int arr[], int n)
{
int sum = 0, max = arr[0];
for(int i=0; i<n; i++)
{
sum+=arr[i];
if(sum>max)
max=sum;
if(sum<0)
sum=0;
}
return max;
}
int circularSubarraySum(int arr[], int n){
int max_normal = NormalSubarraySum(arr,n);
if(max_normal<0)
return max_normal;
int arr_sum=0;
for(int i =0; i<n; i++)
{
arr_sum+=arr[i];
arr[i]=-arr[i];
}
int max_circular = arr_sum + NormalSubarraySum(arr,n);
return max(max_circular,max_normal);
}
};