mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
50 lines
3.1 KiB
HTML
50 lines
3.1 KiB
HTML
<p>给你一个下标从 <strong>0</strong> 开始长度为 <code>n</code> 的整数数组 <code>nums</code> 和两个 <strong>正</strong> 整数 <code>k</code> 和 <code>dist</code> 。</p>
|
||
|
||
<p>一个数组的 <strong>代价</strong> 是数组中的 <strong>第一个</strong> 元素。比方说,<code>[1,2,3]</code> 的代价为 <code>1</code> ,<code>[3,4,1]</code> 的代价为 <code>3</code> 。</p>
|
||
|
||
<p>你需要将 <code>nums</code> 分割成 <code>k</code> 个 <strong>连续且互不相交</strong> 的子数组,满足 <strong>第二</strong> 个子数组与第 <code>k</code> 个子数组中第一个元素的下标距离 <strong>不超过</strong> <code>dist</code> 。换句话说,如果你将 <code>nums</code> 分割成子数组 <code>nums[0..(i<sub>1</sub> - 1)], nums[i<sub>1</sub>..(i<sub>2</sub> - 1)], ..., nums[i<sub>k-1</sub>..(n - 1)]</code> ,那么它需要满足 <code>i<sub>k-1</sub> - i<sub>1</sub> <= dist</code> 。</p>
|
||
|
||
<p>请你返回这些子数组的 <strong>最小</strong> 总代价。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong class="example">示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<b>输入:</b>nums = [1,3,2,6,4,2], k = 3, dist = 3
|
||
<b>输出:</b>5
|
||
<b>解释:</b>将数组分割成 3 个子数组的最优方案是:[1,3] ,[2,6,4] 和 [2] 。这是一个合法分割,因为 i<sub>k-1</sub> - i<sub>1</sub> 等于 5 - 2 = 3 ,等于 dist 。总代价为 nums[0] + nums[2] + nums[5] ,也就是 1 + 2 + 2 = 5 。
|
||
5 是分割成 3 个子数组的最小总代价。
|
||
</pre>
|
||
|
||
<p><strong class="example">示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>nums = [10,1,2,2,2,1], k = 4, dist = 3
|
||
<b>输出:</b>15
|
||
<b>解释:</b>将数组分割成 4 个子数组的最优方案是:[10] ,[1] ,[2] 和 [2,2,1] 。这是一个合法分割,因为 i<sub>k-1</sub> - i<sub>1</sub> 等于 3 - 1 = 2 ,小于 dist 。总代价为 nums[0] + nums[1] + nums[2] + nums[3] ,也就是 10 + 1 + 2 + 2 = 15 。
|
||
分割 [10] ,[1] ,[2,2,2] 和 [1] 不是一个合法分割,因为 i<sub>k-1</sub> 和 i<sub>1</sub> 的差为 5 - 1 = 4 ,大于 dist 。
|
||
15 是分割成 4 个子数组的最小总代价。
|
||
</pre>
|
||
|
||
<p><strong class="example">示例 3:</strong></p>
|
||
|
||
<pre>
|
||
<b>输入:</b>nums = [10,8,18,9], k = 3, dist = 1
|
||
<b>输出:</b>36
|
||
<b>解释:</b>将数组分割成 4 个子数组的最优方案是:[10] ,[8] 和 [18,9] 。这是一个合法分割,因为 i<sub>k-1</sub> - i<sub>1</sub> 等于 2 - 1 = 1 ,等于 dist 。总代价为 nums[0] + nums[1] + nums[2] ,也就是 10 + 8 + 18 = 36 。
|
||
分割 [10] ,[8,18] 和 [9] 不是一个合法分割,因为 i<sub>k-1</sub> 和 i<sub>1</sub> 的差为 3 - 1 = 2 ,大于 dist 。
|
||
36 是分割成 3 个子数组的最小总代价。
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>3 <= n <= 10<sup>5</sup></code></li>
|
||
<li><code>1 <= nums[i] <= 10<sup>9</sup></code></li>
|
||
<li><code>3 <= k <= n</code></li>
|
||
<li><code>k - 2 <= dist <= n - 2</code></li>
|
||
</ul>
|