1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/将数组分成最小总代价的子数组 II [divide-an-array-into-subarrays-with-minimum-cost-ii].html
2024-01-26 11:46:13 +08:00

50 lines
3.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给你一个下标从 <strong>0</strong>&nbsp;开始长度为 <code>n</code>&nbsp;的整数数组&nbsp;<code>nums</code>&nbsp;和两个 <strong></strong>&nbsp;整数&nbsp;<code>k</code>&nbsp;<code>dist</code>&nbsp;</p>
<p>一个数组的 <strong>代价</strong>&nbsp;是数组中的 <strong>第一个</strong>&nbsp;元素。比方说,<code>[1,2,3]</code>&nbsp;的代价为&nbsp;<code>1</code>&nbsp;<code>[3,4,1]</code>&nbsp;的代价为&nbsp;<code>3</code>&nbsp;</p>
<p>你需要将 <code>nums</code>&nbsp;分割成 <code>k</code>&nbsp;<strong>连续且互不相交</strong>&nbsp;的子数组,满足 <strong>第二</strong>&nbsp;个子数组与第 <code>k</code>&nbsp;个子数组中第一个元素的下标距离 <strong>不超过</strong>&nbsp;<code>dist</code>&nbsp;。换句话说,如果你将&nbsp;<code>nums</code>&nbsp;分割成子数组&nbsp;<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>&nbsp;,那么它需要满足&nbsp;<code>i<sub>k-1</sub> - i<sub>1</sub> &lt;= dist</code>&nbsp;</p>
<p>请你返回这些子数组的 <strong>最小</strong>&nbsp;总代价。</p>
<p>&nbsp;</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>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>3 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
<li><code>3 &lt;= k &lt;= n</code></li>
<li><code>k - 2 &lt;= dist &lt;= n - 2</code></li>
</ul>