题目:
解析:
代码:
public int maxSubarraySumCircular(int[] nums) {
int sum = 0;
int n = nums.length;
int[] f = new int[n+1];
int[] g = new int[n+1];
int ret = 0, fmax = -0x3f3f3f3f, gmin = Integer.MAX_VALUE;
for(int i = 1; i <= n; i++){
int x = nums[i-1];
f[i] = Math.max(x,f[i-1] + x);
fmax = Math.max(fmax,f[i]);
g[i] = Math.min(x,g[i-1]+ x);
gmin = Math.min(gmin,g[i]);
sum += x;
}
return sum == gmin ? fmax : Math.max(fmax,sum-gmin);
}