1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/设置时间的最少代价 [minimum-cost-to-set-cooking-time].html
2022-03-29 12:43:11 +08:00

65 lines
4.4 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>常见的微波炉可以设置加热时间,且加热时间满足以下条件:</p>
<ul>
<li>至少为 <code>1</code>&nbsp;秒钟。</li>
<li>至多为&nbsp;<code>99</code>&nbsp;&nbsp;<code>99</code>&nbsp;秒。</li>
</ul>
<p>你可以 <strong>最多</strong>&nbsp;输入&nbsp;<strong>4 个数字</strong>&nbsp;来设置加热时间。如果你输入的位数不足 4 位,微波炉会自动加 <strong>前缀</strong>&nbsp;<strong>0</strong>&nbsp;来补足 4 位。微波炉会将设置好的四位数中,<strong></strong>&nbsp;两位当作分钟数,<strong></strong>&nbsp;两位当作秒数。它们所表示的总时间就是加热时间。比方说:</p>
<ul>
<li>你输入&nbsp;<code>9</code> <code>5</code> <code>4</code>&nbsp;(三个数字),被自动补足为&nbsp;<code>0954</code>&nbsp;,并表示&nbsp;<code>9</code>&nbsp;&nbsp;<code>54</code>&nbsp;秒。</li>
<li>你输入&nbsp;<code>0</code> <code>0</code> <code>0</code> <code>8</code>&nbsp;(四个数字),表示&nbsp;<code>0</code>&nbsp;&nbsp;<code>8</code>&nbsp;秒。</li>
<li>你输入&nbsp;<code>8</code> <code>0</code> <code>9</code> <code>0</code>&nbsp;,表示&nbsp;<code>80</code>&nbsp;&nbsp;<code>90</code>&nbsp;秒。</li>
<li>你输入&nbsp;<code>8</code> <code>1</code> <code>3</code> <code>0</code>&nbsp;,表示&nbsp;<code>81</code>&nbsp;&nbsp;<code>30</code>&nbsp;秒。</li>
</ul>
<p>给你整数&nbsp;<code>startAt</code>&nbsp;<code>moveCost</code>&nbsp;<code>pushCost</code>&nbsp;&nbsp;<code>targetSeconds</code>&nbsp;<strong>一开始</strong>,你的手指在数字&nbsp;<code>startAt</code>&nbsp;处。将手指移到<strong>&nbsp;任何其他数字</strong>&nbsp;,需要花费&nbsp;<code>moveCost</code>&nbsp;的单位代价。<strong></strong>&nbsp;输入你手指所在位置的数字一次,需要花费&nbsp;<code>pushCost</code>&nbsp;的单位代价。</p>
<p>要设置&nbsp;<code>targetSeconds</code>&nbsp;秒的加热时间,可能会有多种设置方法。你想要知道这些方法中,总代价最小为多少。</p>
<p>请你能返回设置&nbsp;<code>targetSeconds</code>&nbsp;秒钟加热时间需要花费的最少代价。</p>
<p>请记住,虽然微波炉的秒数最多可以设置到 <code>99</code>&nbsp;秒,但一分钟等于&nbsp;<code>60</code>&nbsp;秒。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2021/12/30/1.png" style="width: 506px; height: 210px;"></p>
<pre><b>输入:</b>startAt = 1, moveCost = 2, pushCost = 1, targetSeconds = 600
<b>输出:</b>6
<b>解释:</b>以下为设置加热时间的所有方法。
- 1 0 0 0 ,表示 10 分 0 秒。
&nbsp; 手指一开始就在数字 1 处,输入 1 (代价为 1移到 0 处(代价为 2输入 0代价为 1输入 0代价为 1输入 0代价为 1
&nbsp; 总代价为1 + 2 + 1 + 1 + 1 = 6 。这是所有方案中的最小代价。
- 0 9 6 0表示 9 分 60 秒。它也表示 600 秒。
&nbsp; 手指移到 0 处(代价为 2输入 0 (代价为 1移到 9 处(代价为 2输入 9代价为 1移到 6 处(代价为 2输入 6代价为 1移到 0 处(代价为 2输入 0代价为 1
&nbsp; 总代价为2 + 1 + 2 + 1 + 2 + 1 + 2 + 1 = 12 。
- 9 6 0微波炉自动补全为 0960 ,表示 9 分 60 秒。
&nbsp; 手指移到 9 处(代价为 2输入 9 (代价为 1移到 6 处(代价为 2输入 6代价为 1移到 0 处(代价为 2输入 0代价为 1
&nbsp; 总代价为2 + 1 + 2 + 1 + 2 + 1 = 9 。
</pre>
<p><strong>示例 2</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2021/12/30/2.png" style="width: 505px; height: 73px;"></p>
<pre><b>输入:</b>startAt = 0, moveCost = 1, pushCost = 2, targetSeconds = 76
<b>输出:</b>6
<b>解释:</b>最优方案为输入两个数字 7 6表示 76 秒。
手指移到 7 处(代价为 1输入 7 (代价为 2移到 6 处(代价为 1输入 6代价为 2。总代价为1 + 2 + 1 + 2 = 6
其他可行方案为 0076 076 0116 和 116 ,但是它们的代价都比 6 大。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>0 &lt;= startAt &lt;= 9</code></li>
<li><code>1 &lt;= moveCost, pushCost &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= targetSeconds &lt;= 6039</code></li>
</ul>