当前位置:网站首页>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;
}
}
边栏推荐
- LeetCode 1654. 到家的最少跳跃次数 每日一题
- 面试题 01.02. 判定是否互为字符重排-辅助数组算法
- Skimage learning (3) -- gamma and log contrast adjustment, histogram equalization, coloring gray images
- Record the migration process of a project
- 【PHP】PHP接口继承及接口多继承原理与实现方法
- 使用JSON.stringify()去实现深拷贝,要小心哦,可能有巨坑
- [Android -- data storage] use SQLite to store data
- os、sys、random标准库主要功能
- 全网“追杀”钟薛高
- LeetCode 300. 最长递增子序列 每日一题
猜你喜欢
随机推荐
【MySql进阶】索引详解(一):索引数据页结构
使用JSON.stringify()去实现深拷贝,要小心哦,可能有巨坑
SqlServer2014+: 创建表的同时创建索引
Module VI
Lowcode: four ways to help transportation companies enhance supply chain management
[designmode] template method pattern
Read PG in data warehouse in one article_ stat
爬虫(17) - 面试(2) | 爬虫面试题库
The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit
掌握这套精编Android高级面试题解析,oppoAndroid面试题
Ray and OBB intersection detection
射线与OBB相交检测
Horizontal and vertical centering method and compatibility
最新Android高级面试题汇总,Android面试题及答案
AutoLISP series (3): function function 3
LeetCode 1654. 到家的最少跳跃次数 每日一题
深度监听 数组深度监听 watch
DAPP defi NFT LP single and dual currency liquidity mining system development details and source code
[medical segmentation] attention Unet
QT中自定义控件的创建到封装到工具栏过程(二):自定义控件封装到工具栏