Skip to content

Commit 7607f79

Browse files
Kadane Algo | Circular Array
Maximum subarray sum from circular array
1 parent c446173 commit 7607f79

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Solutions/918.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
public:
3+
int maxSubarraySumCircular(vector<int>& nums) {
4+
const int n = nums.size();
5+
vector<int> suffix(n);
6+
7+
suffix[n - 1] = nums[n - 1];
8+
int suffix_sum = nums[n - 1];
9+
10+
for (int i = n - 2; i >= 0; i--) {
11+
suffix_sum += nums[i];
12+
suffix[i] = max(suffix[i + 1], suffix_sum);
13+
}
14+
15+
int normalSum = nums[0];
16+
int special_sum = nums[0];
17+
int currSum = 0;
18+
int prefixSum = 0;
19+
20+
for (int i = 0; i < n; ++i) {
21+
// Kadane algo start
22+
currSum += nums[i];
23+
normalSum = max(normalSum, currSum);
24+
if(currSum < 0){
25+
currSum = 0;
26+
}
27+
// kadane algo end
28+
prefixSum += nums[i];
29+
if (i + 1 < n) {
30+
special_sum = max(special_sum, prefixSum + suffix[i + 1]);
31+
}
32+
}
33+
return max(normalSum, special_sum);
34+
}
35+
};

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy