mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
65 lines
4.4 KiB
HTML
65 lines
4.4 KiB
HTML
<p>常见的微波炉可以设置加热时间,且加热时间满足以下条件:</p>
|
||
|
||
<ul>
|
||
<li>至少为 <code>1</code> 秒钟。</li>
|
||
<li>至多为 <code>99</code> 分 <code>99</code> 秒。</li>
|
||
</ul>
|
||
|
||
<p>你可以 <strong>最多</strong> 输入 <strong>4 个数字</strong> 来设置加热时间。如果你输入的位数不足 4 位,微波炉会自动加 <strong>前缀</strong> <strong>0</strong> 来补足 4 位。微波炉会将设置好的四位数中,<strong>前</strong> 两位当作分钟数,<strong>后</strong> 两位当作秒数。它们所表示的总时间就是加热时间。比方说:</p>
|
||
|
||
<ul>
|
||
<li>你输入 <code>9</code> <code>5</code> <code>4</code> (三个数字),被自动补足为 <code>0954</code> ,并表示 <code>9</code> 分 <code>54</code> 秒。</li>
|
||
<li>你输入 <code>0</code> <code>0</code> <code>0</code> <code>8</code> (四个数字),表示 <code>0</code> 分 <code>8</code> 秒。</li>
|
||
<li>你输入 <code>8</code> <code>0</code> <code>9</code> <code>0</code> ,表示 <code>80</code> 分 <code>90</code> 秒。</li>
|
||
<li>你输入 <code>8</code> <code>1</code> <code>3</code> <code>0</code> ,表示 <code>81</code> 分 <code>30</code> 秒。</li>
|
||
</ul>
|
||
|
||
<p>给你整数 <code>startAt</code> ,<code>moveCost</code> ,<code>pushCost</code> 和 <code>targetSeconds</code> 。<strong>一开始</strong>,你的手指在数字 <code>startAt</code> 处。将手指移到<strong> 任何其他数字</strong> ,需要花费 <code>moveCost</code> 的单位代价。<strong>每</strong> 输入你手指所在位置的数字一次,需要花费 <code>pushCost</code> 的单位代价。</p>
|
||
|
||
<p>要设置 <code>targetSeconds</code> 秒的加热时间,可能会有多种设置方法。你想要知道这些方法中,总代价最小为多少。</p>
|
||
|
||
<p>请你能返回设置 <code>targetSeconds</code> 秒钟加热时间需要花费的最少代价。</p>
|
||
|
||
<p>请记住,虽然微波炉的秒数最多可以设置到 <code>99</code> 秒,但一分钟等于 <code>60</code> 秒。</p>
|
||
|
||
<p> </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 秒。
|
||
手指一开始就在数字 1 处,输入 1 (代价为 1),移到 0 处(代价为 2),输入 0(代价为 1),输入 0(代价为 1),输入 0(代价为 1)。
|
||
总代价为:1 + 2 + 1 + 1 + 1 = 6 。这是所有方案中的最小代价。
|
||
- 0 9 6 0,表示 9 分 60 秒。它也表示 600 秒。
|
||
手指移到 0 处(代价为 2),输入 0 (代价为 1),移到 9 处(代价为 2),输入 9(代价为 1),移到 6 处(代价为 2),输入 6(代价为 1),移到 0 处(代价为 2),输入 0(代价为 1)。
|
||
总代价为:2 + 1 + 2 + 1 + 2 + 1 + 2 + 1 = 12 。
|
||
- 9 6 0,微波炉自动补全为 0960 ,表示 9 分 60 秒。
|
||
手指移到 9 处(代价为 2),输入 9 (代价为 1),移到 6 处(代价为 2),输入 6(代价为 1),移到 0 处(代价为 2),输入 0(代价为 1)。
|
||
总代价为: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> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>0 <= startAt <= 9</code></li>
|
||
<li><code>1 <= moveCost, pushCost <= 10<sup>5</sup></code></li>
|
||
<li><code>1 <= targetSeconds <= 6039</code></li>
|
||
</ul>
|