💡 LeetCode 高分题详解 | 数组划分变换求最大和(动态规划)
在刷 LeetCode 的过程中,我们经常会遇到动态规划类的问题,它们虽然看起来难度较高,但一旦掌握思路,解题其实非常有章可循。今天要介绍的这道题就是一个非常经典、值得深入理解的动态规划问题。
🧩 题目描述
给你一个整数数组 arr
,请你将该数组分隔为长度最多为 k 的一些连续子数组。
每个子数组变换规则如下:
- 每个子数组的所有元素都将被替换为该子数组中的最大值;
- 最终我们将所有子数组拼接起来,形成一个新的数组;
- 返回这个新数组的元素总和的最大值。
保证答案不会超过 32 位整数范围。
📘 示例
输入: arr = [1,15,7,9,2,5,10], k = 3
输出: 84
解释:
分组方案:[1,15,7] => [15,15,15]
[9,2,5] => [9,9,9]
[10] => [10]
新数组为:[15,15,15,9,9,9,10],总和为 84
🧠 解题思路分析
这道题的核心在于选择怎样分组,使得用最大值替代后乘以子数组长度,