Maximum Sum Circular Subarray LeetCode solution in Java
1class Solution {2public int maxSubarraySumCircular(int[] nums) {3int ans = kadane(nums);4int sum = 0;5for (int i = 0; i < nums.length; i++) {6sum += nums[i];7nums[i] = -nums[i];8}9int kadane_sum = kadane(nums) + sum;10if (kadane_sum == 0) {11return ans;12}13return Math.max(ans, kadane_sum);14}1516public int kadane(int[] nums) {17int sum = 0;18int ans = Integer.MIN_VALUE;19for (int i : nums) {20sum += i;21ans = Math.max(ans, sum);22if (sum < 0) {23sum = 0;24}25}26return ans;27}28}