当前位置:网站首页>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;
}
}边栏推荐
- 打造All-in-One应用开发平台,轻流树立无代码行业标杆
- 【DesignMode】外观模式 (facade patterns)
- ORACLE进阶(六)ORACLE expdp/impdp详解
- Pychart ide Download
- Personal notes of graphics (4)
- LeetCode 1986. 完成任务的最少工作时间段 每日一题
- typescript ts基础知识之tsconfig.json配置选项
- Imitate the choice of enterprise wechat conference room
- 值得一看,面试考点与面试技巧
- Personal notes of graphics (2)
猜你喜欢
随机推荐
水平垂直居中 方法 和兼容
Read PG in data warehouse in one article_ stat
Find tags in prefab in unity editing mode
Cesium(3):ThirdParty/zip. js
Prometheus API deletes all data of a specified job
[designmode] proxy pattern
[Android -- data storage] use SQLite to store data
第九届 蓝桥杯 决赛 交换次数
Opportunity interview experience summary
【PHP】PHP接口继承及接口多继承原理与实现方法
Pycharm IDE下载
3000 words speak through HTTP cache
LeetCode 1981. 最小化目标值与所选元素的差 每日一题
最新高频Android面试题目分享,带你一起探究Android事件分发机制
Usage of config in laravel
LeetCode-SQL第一天
【MySql进阶】索引详解(一):索引数据页结构
数据中台落地实施之法
Set the route and optimize the URL in thinkphp3.2.3
LeetCode 1155. 掷骰子的N种方法 每日一题






![[designmode] proxy pattern](/img/ed/642aebc7b49cbf4d30b517665b2438.png)
![[vulnhub range] thales:1](/img/fb/721d08697afe9b26c94fede628c4d1.png)