Maximum Sum Circular Subarray LeetCode solution in Java

1
class Solution {
2
public int maxSubarraySumCircular(int[] nums) {
3
int ans = kadane(nums);
4
int sum = 0;
5
for (int i = 0; i < nums.length; i++) {
6
sum += nums[i];
7
nums[i] = -nums[i];
8
}
9
int kadane_sum = kadane(nums) + sum;
10
if (kadane_sum == 0) {
11
return ans;
12
}
13
return Math.max(ans, kadane_sum);
14
}
15

16
public int kadane(int[] nums) {
17
int sum = 0;
18
int ans = Integer.MIN_VALUE;
19
for (int i : nums) {
20
sum += i;
21
ans = Math.max(ans, sum);
22
if (sum < 0) {
23
sum = 0;
24
}
25
}
26
return ans;
27
}
28
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0