当前位置:网站首页>LeetCode 1031. Maximum sum of two non overlapping subarrays
LeetCode 1031. Maximum sum of two non overlapping subarrays
2022-07-07 16:58:00 【@Little safflower】
Problem description
Give an array of nonnegative integers A , Return two non overlapping ( continuity ) The maximum sum of elements in a subarray , The length of the subarray is L and M.( What needs to be clarified here is , Long for L The subarray of can appear at length as M Before or after the subarray of .)
In form , Return to the biggest V, and V = (A[i] + A[i+1] + ... + A[i+L-1]) + (A[j] + A[j+1] + ... + A[j+M-1]) And meet one of the following conditions :
0 <= i < i + L - 1 < j < j + M - 1 < A.length, or
0 <= j < j + M - 1 < i < i + L - 1 < A.length.
Example 1:
Input :A = [0,6,5,2,2,5,1,9,4], L = 1, M = 2
Output :20
explain : In a selection of subarrays ,[9] The length is 1,[6,5] The length is 2.
Example 2:Input :A = [3,8,1,3,2,1,8,9,0], L = 3, M = 2
Output :29
explain : In a selection of subarrays ,[3,8,1] The length is 3,[8,9] The length is 2.
Example 3:Input :A = [2,1,5,6,0,9,5,0,3,8], L = 4, M = 3
Output :31
explain : In a selection of subarrays ,[5,6,0,9] The length is 4,[0,3,8] The length is 3.
Tips :
L >= 1
M >= 1
L + M <= A.length <= 1000
0 <= A[i] <= 1000source : Power button (LeetCode)
link :https://leetcode.cn/problems/maximum-sum-of-two-non-overlapping-subarrays
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
java
class Solution {
public int maxSumTwoNoOverlap(int[] nums, int firstLen, int secondLen) {
int n = nums.length;
// The prefix and
int[] sum = new int[n + 1];
for(int i = 0;i < n;i++){
sum[i + 1] = sum[i] + nums[i];
}
// In exchange for
if(firstLen > secondLen){
firstLen ^= secondLen;
secondLen ^= firstLen;
firstLen ^= secondLen;
}
int[][] dp = new int[n + 1][2];
int ans = 0;
// From firstLen Start
for(int i = firstLen;i <= n;i++){
// The current element has been closed before firstLen And
int s1 = sum[i] - sum[i - firstLen];
dp[i][0] = Math.max(dp[i - 1][0],s1);
ans = Math.max(ans,s1 + dp[i - firstLen][1]);
if(i >= secondLen){
int s2 = sum[i] - sum[i - secondLen];
dp[i][1] = Math.max(dp[i - 1][1],s2);
ans = Math.max(ans,s2 + dp[i - secondLen][0]);
}
}
return ans;
}
}
边栏推荐
猜你喜欢
面向接口编程
爬虫(17) - 面试(2) | 爬虫面试题库
低代码(lowcode)帮助运输公司增强供应链管理的4种方式
Pycharm IDE下载
The difference and working principle between compiler and interpreter
二叉搜索树(特性篇)
The latest interview experience of Android manufacturers in 2022, Android view+handler+binder
1亿单身男女“在线相亲”,撑起130亿IPO
Talk about the realization of authority control and transaction record function of SAP system
Sort out several important Android knowledge and advanced Android development interview questions
随机推荐
[medical segmentation] attention Unet
预售17.9万,恒驰5能不能火?产品力在线,就看怎么卖
最新阿里P7技术体系,妈妈再也不用担心我找工作了
typescript ts 基础知识之类型声明
LeetCode 152. 乘积最大子数组 每日一题
LeetCode-SQL第一天
Set the route and optimize the URL in thinkphp3.2.3
LeetCode 1031. 两个非重叠子数组的最大和 每日一题
LeetCode 1986. 完成任务的最少工作时间段 每日一题
[designmode] flyweight pattern
Record the migration process of a project
Cesium (4): the reason why gltf model is very dark after loading
【医学分割】attention-unet
二叉搜索树(基操篇)
The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit
Localstorage and sessionstorage
Personal notes of graphics (3)
掌握这个提升路径,面试资料分享
字节跳动Android金三银四解析,android面试题app
水平垂直居中 方法 和兼容