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)/经营摩天轮的最大利润 [maximum-profit-of-operating-a-centennial-wheel].html

64 lines
4.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>4 个座舱</strong> ,每个座舱<strong> 最多可以容纳 4 位游客</strong> 。你可以 <strong>逆时针</strong>&nbsp;轮转座舱,但每次轮转都需要支付一定的运行成本 <code>runningCost</code> 。摩天轮每次轮转都恰好转动 1 / 4 周。</p>
<p>给你一个长度为 <code>n</code> 的数组 <code>customers</code> <code>customers[i]</code> 是在第 <code>i</code> 次轮转(下标从 0 开始)之前到达的新游客的数量。这也意味着你必须在新游客到来前轮转 <code>i</code> 次。每位游客在登上离地面最近的座舱前都会支付登舱成本 <code>boardingCost</code> ,一旦该座舱再次抵达地面,他们就会离开座舱结束游玩。</p>
<p>你可以随时停下摩天轮,即便是 <strong>在服务所有游客之前</strong> 。如果你决定停止运营摩天轮,为了保证所有游客安全着陆,<strong>将免费进行</strong><strong>所有后续轮转</strong>&nbsp;。注意,如果有超过 4 位游客在等摩天轮,那么只有 4 位游客可以登上摩天轮,其余的需要等待 <strong>下一次轮转</strong></p>
<p>返回最大化利润所需执行的 <strong>最小轮转次数</strong> 。 如果不存在利润为正的方案,则返回 <code>-1</code></p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<p><img alt="" src="https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/09/26/wheeldiagram12.png" /></p>
<pre>
<strong>输入:</strong>customers = [8,3], boardingCost = 5, runningCost = 6
<strong>输出:</strong>3
<strong>解释:</strong>座舱上标注的数字是该座舱的当前游客数。
1. 8 位游客抵达4 位登舱4 位等待下一舱,摩天轮轮转。当前利润为 4 * $5 - 1 * $6 = $14 。
2. 3 位游客抵达4 位在等待的游客登舱,其他 3 位等待,摩天轮轮转。当前利润为 8 * $5 - 2 * $6 = $28 。
3. 最后 3 位游客登舱,摩天轮轮转。当前利润为 11 * $5 - 3 * $6 = $37 。
轮转 3 次得到最大利润,最大利润为 $37 。</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>customers = [10,9,6], boardingCost = 6, runningCost = 4
<strong>输出:</strong>7
<strong>解释:</strong>
1. 10 位游客抵达4 位登舱6 位等待下一舱,摩天轮轮转。当前利润为 4 * $6 - 1 * $4 = $20 。
2. 9 位游客抵达4 位登舱11 位等待2 位是先前就在等待的9 位新加入等待的),摩天轮轮转。当前利润为 8 * $6 - 2 * $4 = $40 。
3. 最后 6 位游客抵达4 位登舱13 位等待,摩天轮轮转。当前利润为 12 * $6 - 3 * $4 = $60 。
4. 4 位登舱9 位等待,摩天轮轮转。当前利润为 * $6 - 4 * $4 = $80 。
5. 4 位登舱5 位等待,摩天轮轮转。当前利润为 20 * $6 - 5 * $4 = $100 。
6. 4 位登舱1 位等待,摩天轮轮转。当前利润为 24 * $6 - 6 * $4 = $120 。
7. 1 位登舱,摩天轮轮转。当前利润为 25 * $6 - 7 * $4 = $122 。
轮转 7 次得到最大利润,最大利润为$122 。
</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>customers = [3,4,0,5,1], boardingCost = 1, runningCost = 92
<strong>输出:</strong>-1
<strong>解释:</strong>
1. 3 位游客抵达3 位登舱0 位等待,摩天轮轮转。当前利润为 3 * $1 - 1 * $92 = -$89 。
2. 4 位游客抵达4 位登舱0 位等待,摩天轮轮转。当前利润为 7 * $1 - 2 * $92 = -$177 。
3. 0 位游客抵达0 位登舱0 位等待,摩天轮轮转。当前利润为 7 * $1 - 3 * $92 = -$269 。
4. 5 位游客抵达4 位登舱1 位等待,摩天轮轮转。当前利润为 11 * $1 - 4 * $92 = -$357 。
5. 1 位游客抵达2 位登舱0 位等待,摩天轮轮转。当前利润为 13 * $1 - 5 * $92 = -$447 。
利润永不为正,所以返回 -1 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>n == customers.length</code></li>
<li><code>1 &lt;= n &lt;= 10<sup>5</sup></code></li>
<li><code>0 &lt;= customers[i] &lt;= 50</code></li>
<li><code>1 &lt;= boardingCost, runningCost &lt;= 100</code></li>
</ul>