15. Maximum Sum Circular Subarray
compensation leetcode challenge leetcode decode ways leetcode dark theme leetcode dfs leetcode data structures leetcode decode ways ii leetcode discuss leetcode daily temperatures leetcode edit distance leetcode explore leetcode easy problems leetcode
errichto leetcode editor leetcode extension leetcode egg drop leetcode editorial leetcode flood fill leetcode find the town judge lgeetcode free leetcode founder leetcode for beginners
Given a circular array C of integers represented by A, find the maximum possible sum of a non-empty subarray of C.
Here, a circular array means the end of the array connects to the beginning of the array.
(Formally, C[i] = A[i] when 0 <= i < A.length, and C[i+A.length] = C[i] when i >= 0.)
Also, a subarray may only include each element of the fixed buffer A at most once.
(Formally, for a subarray C[i], C[i+1], ..., C[j], there does not exist i <= k1, k2 <= j with k1 % A.length = k2 % A.length.)
Example 1:
Input: [1,-2,3,-2] Output: 3 Explanation: Subarray [3] has maximum sum 3
Example 2:
Input: [5,-3,5] Output: 10 Explanation: Subarray [5,5] has maximum sum 5 + 5 = 10
Example 3:
Input: [3,-1,2,-1] Output: 4 Explanation: Subarray [2,-1,3] has maximum sum 2 + (-1) + 3 = 4
Example 4:
Input: [3,-2,2,-3] Output: 3 Explanation: Subarray [3] and [3,-2,2] both have maximum sum 3
Example 5:
Input: [-2,-3,-1] Output: -1 Explanation: Subarray [-1] has maximum sum -1
Note:
-30000 <= A[i] <= 30000
1 <= A.length <= 30000
Solution in C++:
class Solution {
public:
int maxSubarraySumCircular(vector<int>& A) {
int nocircle= help(A), sum= 0;
if(nocircle < 0)
return nocircle;
vector<int> tmp= A;
for(auto &n: tmp){
sum+= n;
n*= -1;
}
int circle= sum+ help(tmp);
return max(circle, nocircle);
}
int help(vector<int>& A){
int max_endhere= 0, max_sofar= INT_MIN;
for(int i= 0; i< A.size(); i++){
if(max_endhere < 0)
max_endhere= A[i];
else
max_endhere+= A[i];
max_sofar= max(max_sofar, max_endhere);
}
return max_sofar;
}
};
compensation leetcode challenge leetcode decode ways leetcode dark theme leetcode dfs leetcode data structures leetcode decode ways ii leetcode discuss leetcode daily temperatures leetcode edit distance leetcode explore leetcode easy problems leetcode
errichto leetcode editor leetcode extension leetcode egg drop leetcode editorial leetcode flood fill leetcode find the town judge lgeetcode free leetcode founder leetcode for beginners
Comments
Post a Comment