category-wise-problems

contains category wise problems(data structures, competitive) of popular platforms.

View the Project on GitHub mayankdutta/category-wise-problems

Tags: prefix-sum kadane

918. Maximum Sum Circular Subarray
implementation 1 ```cpp class Solution { public: int kadane(const vector& arr) { int sum = 0; int ans = INT_MIN; for (const auto &i: arr) { sum = max(i, sum + i); ans = max(ans, sum); } return ans; } int maxSubarraySumCircular(vector& nums) { int n = nums.size(); int ans1 = kadane(nums); bool neg = true; bool pos = true; int sum = 0; for (int& i: nums) { sum += i; i *= -1; if (i < 0) pos = false; if (i > 0) neg = false; } if (neg || pos) { return ans1; } int ans2 = -1 * kadane(nums); printf("%d, %d\n", ans1, ans2); return max(ans1, sum - ans2); } }; ``` </details>
implementation 2 ```cpp class Solution { public: int maxSubarraySumCircular(vector& nums) { int sum = 0; int sum1 = 0; int sum2 = 0; bool neg = true; bool pos = true; int mx = INT_MIN; int mn = INT_MAX; for (const auto &i: nums) { sum1 = max(i, sum1 + i); sum2 = min(i, sum2 + i); mx = max(mx, sum1); mn = min(mn, sum2); sum += i; if (i < 0) pos = false; if (i > 0) neg = false; } if (neg || pos) { return mx; } return max(mx, sum - mn); } }; ``` </details>