生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1599. 经营摩天轮的最大利润(模拟)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
1. 題目
你正在經營一座摩天輪,該摩天輪共有 4 個座艙 ,每個座艙 最多可以 容納 4 位游客 。你可以 逆時針 輪轉座艙,但每次輪轉都需要支付一定的運行成本 runningCost 。摩天輪每次輪轉都恰好轉動 1 / 4 周 。
給你一個長度為 n 的數組 customers , customers[i] 是在第 i 次輪轉(下標從 0 開始)之前到達的新游客 的數量。這也意味著你必須在新游客到來前輪轉 i 次。每位 游客在登上離地面最近的座艙前都會支付登艙成本 boardingCost ,一旦該座艙再次抵達地面,他們就會離開座艙結束游玩。
你可以隨時停下 摩天輪,即便是 在服務所有游客之前 。如果你決定停止運營摩天輪,為了保證所有游客安全著陸,將免費進行所有后續輪轉 。注意,如果有超過 4 位游客在等摩天輪,那么只有 4 位游客可以登上摩天輪,其余的需要等待 下一次輪轉 。
返回最大化 利潤所需執行的 最小輪轉次數 。 如果不存在利潤為正的方案,則返回 -1 。
示例 1:
輸入:customers
= [ 8 , 3 ] , boardingCost
= 5 , runningCost
= 6
輸出:
3
解釋:座艙上標注的數字是該座艙的當前游客數。
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 。示例
2 :
輸入:customers
= [ 10 , 9 , 6 ] , boardingCost
= 6 , runningCost
= 4
輸出:
7
解釋:
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 。示例
3 :
輸入:customers
= [ 3 , 4 , 0 , 5 , 1 ] , boardingCost
= 1 , runningCost
= 92
輸出:
- 1
解釋:
1. 3 位游客抵達,
3 位登艙,
0 位等待,摩天輪輪轉。當前利潤為
3 * $
1 - 1 * $
92 = - $
89 。
2. 4 位游客抵達,
4 位登艙,
0 位等待,摩天輪輪轉。當前利潤為 is
7 * $
1 - 2 * $
92 = - $
177 。
3. 0 位游客抵達,
0 位登艙,
0 位等待,摩天輪輪轉。當前利潤為
7 * $
1 - 3 * $
92 = - $
269 。
4. 5 位游客抵達,
4 位登艙,
1 位等待,摩天輪輪轉。當前利潤為
12 * $
1 - 4 * $
92 = - $
356 。
5. 1 位游客抵達,
2 位登艙,
0 位等待,摩天輪輪轉。當前利潤為
13 * $
1 - 5 * $
92 = - $
447 。
利潤永不為正,所以返回
- 1 。示例
4 :
輸入:customers
= [ 10 , 10 , 6 , 4 , 7 ] , boardingCost
= 3 , runningCost
= 8
輸出:
9
解釋:
1. 10 位游客抵達,
4 位登艙,
6 位等待,摩天輪輪轉。當前利潤為
4 * $
3 - 1 * $
8 = $
4 。
2. 10 位游客抵達,
4 位登艙,
12 位等待,摩天輪輪轉。當前利潤為
8 * $
3 - 2 * $
8 = $
8 。
3. 6 位游客抵達,
4 位登艙,
14 位等待,摩天輪輪轉。當前利潤為
12 * $
3 - 3 * $
8 = $
12 。
4. 4 位游客抵達,
4 位登艙,
14 位等待,摩天輪輪轉。當前利潤為
16 * $
3 - 4 * $
8 = $
16 。
5. 7 位游客抵達,
4 位登艙,
17 位等待,摩天輪輪轉。當前利潤為
20 * $
3 - 5 * $
8 = $
20 。
6. 4 位登艙,
13 位等待,摩天輪輪轉。當前利潤為
24 * $
3 - 6 * $
8 = $
24 。
7. 4 位登艙,
9 位等待,摩天輪輪轉。當前利潤為
28 * $
3 - 7 * $
8 = $
28 。
8. 4 位登艙,
5 位等待,摩天輪輪轉。當前利潤為
32 * $
3 - 8 * $
8 = $
32 。
9. 4 位登艙,
1 位等待,摩天輪輪轉。當前利潤為
36 * $
3 - 9 * $
8 = $
36 。
???????
10. 1 位登艙,
0 位等待,摩天輪輪轉。當前利潤為
37 * $
3 - 10 * $
8 = $
31 。
輪轉
9 次得到最大利潤,最大利潤為 $
36 。提示:
n
== customers
. length
1 <= n
<= 105
0 <= customers
[ i
] <= 50
1 <= boardingCost
, runningCost
<= 100
來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/maximum-profit-of-operating-a-centennial-wheel 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
class Solution {
public : int minOperationsMaxProfit ( vector
< int > & customers
, int boardingCost
, int runningCost
) { if ( boardingCost
* 4 <= runningCost
) return - 1 ; int t
= - 1 , maxProfit
= INT_MIN
, profit
= 0 , n
= customers
. size ( ) ; int people
= 0 , getup
; for ( int i
= 0 ; i
< n
|| people
> 0 ; i
++ ) { if ( i
< n
) people
+ = customers
[ i
] ; if ( people
> 0 ) { getup
= min ( 4 , people
) ; profit
+ = getup
* boardingCost
; people
- = getup
; } profit
- = runningCost
; if ( profit
> maxProfit
) { maxProfit
= profit
; if ( maxProfit
> 0 ) t
= i
+ 1 ; } } return t
; }
} ;
356 ms 79.6 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
創作挑戰賽 新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔 為你收集整理的LeetCode 1599. 经营摩天轮的最大利润(模拟) 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。