-
-
Notifications
You must be signed in to change notification settings - Fork 8.8k
/
Copy pathSolution.java
32 lines (32 loc) · 1.01 KB
/
Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
public int[] maxSumOfThreeSubarrays(int[] nums, int k) {
int[] ans = new int[3];
int s = 0, s1 = 0, s2 = 0, s3 = 0;
int mx1 = 0, mx12 = 0;
int idx1 = 0, idx121 = 0, idx122 = 0;
for (int i = k * 2; i < nums.length; ++i) {
s1 += nums[i - k * 2];
s2 += nums[i - k];
s3 += nums[i];
if (i >= k * 3 - 1) {
if (s1 > mx1) {
mx1 = s1;
idx1 = i - k * 3 + 1;
}
if (mx1 + s2 > mx12) {
mx12 = mx1 + s2;
idx121 = idx1;
idx122 = i - k * 2 + 1;
}
if (mx12 + s3 > s) {
s = mx12 + s3;
ans = new int[] {idx121, idx122, i - k + 1};
}
s1 -= nums[i - k * 3 + 1];
s2 -= nums[i - k * 2 + 1];
s3 -= nums[i - k + 1];
}
}
return ans;
}
}