当前位置:网站首页>LeetCode 1043. 分隔数组以得到最大和 每日一题
LeetCode 1043. 分隔数组以得到最大和 每日一题
2022-07-07 15:32:00 【@小红花】
问题描述
给你一个整数数组 arr,请你将该数组分隔为长度最多为 k 的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。
返回将数组分隔变换后能够得到的元素最大和。
注意,原数组和分隔后的数组对应顺序应当一致,也就是说,你只能选择分隔数组的位置而不能调整数组中的顺序。
示例 1:
输入:arr = [1,15,7,9,2,5,10], k = 3
输出:84
解释:
因为 k=3 可以分隔成 [1,15,7] [9] [2,5,10],结果为 [15,15,15,9,10,10,10],和为 84,是该数组所有分隔变换后元素总和最大的。
若是分隔成 [1] [15,7,9] [2,5,10],结果就是 [1, 15, 15, 15, 10, 10, 10] 但这种分隔方式的元素总和(76)小于上一种。
示例 2:输入:arr = [1,4,1,5,7,3,6,1,9,9,3], k = 4
输出:83
示例 3:输入:arr = [1], k = 1
输出:1
提示:
1 <= arr.length <= 500
0 <= arr[i] <= 109
1 <= k <= arr.length来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/partition-array-for-maximum-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
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];
}
//得到指定区间的最大值
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;
}
}
边栏推荐
- null == undefined
- dapp丨defi丨nft丨lp单双币流动性挖矿系统开发详细说明及源码
- 最新2022年Android大厂面试经验,安卓View+Handler+Binder
- Sqlserver2014+: create indexes while creating tables
- 字节跳动高工面试,轻松入门flutter
- logback.xml配置不同级别日志,设置彩色输出
- OpenGL personal notes
- Laravel post shows an exception when submitting data
- LeetCode-SQL第一天
- 最新Android面试合集,android视频提取音频
猜你喜欢
[medical segmentation] attention Unet
【DesignMode】代理模式(proxy pattern)
The difference and working principle between compiler and interpreter
【MySql进阶】索引详解(一):索引数据页结构
Cesium(3):ThirdParty/zip. js
删除 console 语句引发的惨案
Imitate the choice of enterprise wechat conference room
记录Servlet学习时的一次乱码
Master this promotion path and share interview materials
【图像传感器】相关双采样CDS
随机推荐
Usage of config in laravel
Master this promotion path and share interview materials
Arduino 控制的双足机器人
记录Servlet学习时的一次乱码
Build an all in one application development platform, light flow, and establish a code free industry benchmark
应用在温度检测仪中的温度传感芯片
字节跳动Android金三银四解析,android面试题app
01tire+ chain forward star +dfs+ greedy exercise one
QT中自定义控件的创建到封装到工具栏过程(二):自定义控件封装到工具栏
谎牛计数(春季每日一题 53)
47_ Contour lookup in opencv cv:: findcontours()
The differences between exit, exit (0), exit (1), exit ('0 '), exit ('1'), die and return in PHP
Lie cow count (spring daily question 53)
three. JS create cool snow effect
字节跳动Android面试,知识点总结+面试题解析
【HCSD大咖直播】亲授大厂面试秘诀-简要笔记
编程模式-表驱动编程
PHP realizes wechat applet face recognition and face brushing login function
Prometheus API deletes all data of a specified job
LeetCode-SQL第一天