当前位置:网站首页>LeetCode 1043. Separate the array to get the maximum and daily questions
LeetCode 1043. Separate the array to get the maximum and daily questions
2022-07-07 16:58:00 【@Little safflower】
Problem description
Give you an array of integers arr, Please separate the array into at most k Some of ( continuity ) Subarray . After separation , All values in each subarray will become the maximum value in that subarray .
Returns the maximum sum of elements that can be obtained after separating and transforming the array .
Be careful , The corresponding order of the original array and the separated array should be the same , in other words , You can only choose the position of the separated array, but you can't adjust the order in the array .
Example 1:
Input :arr = [1,15,7,9,2,5,10], k = 3
Output :84
explain :
because k=3 Can be separated into [1,15,7] [9] [2,5,10], The result is [15,15,15,9,10,10,10], And for 84, Is the largest sum of all elements of the array after separation and transformation .
If separated into [1] [15,7,9] [2,5,10], The result is [1, 15, 15, 15, 10, 10, 10] But the sum of the elements of this separation (76) Less than one .
Example 2:Input :arr = [1,4,1,5,7,3,6,1,9,9,3], k = 4
Output :83
Example 3:Input :arr = [1], k = 1
Output :1
Tips :
1 <= arr.length <= 500
0 <= arr[i] <= 109
1 <= k <= arr.lengthsource : Power button (LeetCode)
link :https://leetcode.cn/problems/partition-array-for-maximum-sum
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 maxSumAfterPartitioning(int[] arr, int k) {
int n = arr.length;
int[] dp = new int[n];
for(int i = 0;i < k;i++){
dp[i] = getMaxValue(arr,0,i) * (i + 1);
}
for(int i = k;i < n;i++){
for(int j = 1;j <= k;j++){
dp[i] = Math.max(dp[i],dp[i - j] + getMaxValue(arr,i - j + 1,i) * j);
}
}
return dp[n - 1];
}
// Get the maximum value of the specified interval
public int getMaxValue(int[] arr,int left,int right){
int ans = 0;
for(int i = left;i <= right;i++){
ans = Math.max(ans,arr[i]);
}
return ans;
}
}边栏推荐
猜你喜欢

使用JSON.stringify()去实现深拷贝,要小心哦,可能有巨坑

"The" "PIP" "entry cannot be recognized as the name of a cmdlet, function, script file, or runnable program."

skimage学习(2)——RGB转灰度、RGB 转 HSV、直方图匹配

二叉搜索树(特性篇)
![[medical segmentation] attention Unet](/img/f4/cf5b8fe543a19a5554897a09b26e68.png)
[medical segmentation] attention Unet

AutoLISP series (3): function function 3

Process from creation to encapsulation of custom controls in QT to toolbar (I): creation of custom controls

Interface oriented programming

Personal notes of graphics (1)

Pisa-Proxy SQL 解析之 Lex & Yacc
随机推荐
《产品经理必读:五种经典的创新思维模型》的读后感
二叉搜索树(基操篇)
LeetCode 1981. 最小化目标值与所选元素的差 每日一题
LeetCode 1155. 掷骰子的N种方法 每日一题
LeetCode 1043. 分隔数组以得到最大和 每日一题
Set the route and optimize the URL in thinkphp3.2.3
ByteDance Android gold, silver and four analysis, Android interview question app
dapp丨defi丨nft丨lp单双币流动性挖矿系统开发详细说明及源码
LeetCode 1626. 无矛盾的最佳球队 每日一题
Advanced C language -- function pointer
Prometheus API deletes all data of a specified job
ATM system
字节跳动Android面试,知识点总结+面试题解析
如何快速检查钢网开口面积比是否符合 IPC7525
【Seaborn】组合图表、多子图的实现
Three. JS series (3): porting shaders in shadertoy
Opportunity interview experience summary
掌握这套精编Android高级面试题解析,oppoAndroid面试题
Cesium (4): the reason why gltf model is very dark after loading
3000 words speak through HTTP cache