Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8b0d586

Browse files
committed
update 1031.maximum-sum-of-two-non-overlapping-subarrays.java
1 parent eeff25b commit 8b0d586

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

‎1031.maximum-sum-of-two-non-overlapping-subarrays.java‎

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -80,29 +80,24 @@
8080
// @lc code=start
8181
class Solution {
8282
int callme(int[] A, int L, int M){
83-
int n = A.length, cur = 0;
84-
int[] dp = new int[n];
85-
for(int i=0; i<n; i++){
86-
cur += A[i];
87-
if(i>=L)
88-
cur -= A[i-L];
89-
else if(i < L-1)
90-
continue;
91-
dp[i] = Math.max( i == 0 ? 0 : dp[i-1], cur);
92-
}
93-
cur = 0;
94-
int maxtillnow = 0, ans = 0;
95-
for(int i=n-1; i>=L; i--){
96-
cur += A[i];
97-
if(i+M < n)
98-
cur -= A[i+M];
99-
else if(i+M > n)
100-
continue;
101-
maxtillnow = Math.max(maxtillnow, cur);
102-
ans = Math.max(ans, dp[i-1]+maxtillnow);
83+
int msum = 0, lsum = 0, maxlsum = 0, ans = 0;
84+
for(int i=0; i<A.length; i++){
85+
msum += A[i];
86+
if(i-M >= 0){
87+
msum -= A[i-M];
88+
lsum += A[i-M];
89+
}
90+
if(i-M-L>=0)
91+
lsum -= A[i-M-L];
92+
93+
if(i-M-L >= -1){
94+
maxlsum = Math.max(maxlsum, lsum);
95+
ans = Math.max(ans, maxlsum+msum);
96+
}
10397
}
10498
return ans;
10599
}
100+
106101
public int maxSumTwoNoOverlap(int[] A, int L, int M) {
107102
return Math.max(callme(A, L, M), callme(A, M, L));
108103
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /