【LeetCode每日一题】1599. 经营摩天轮的最大利润(模拟)—2024新年快乐!
2024-01-01 17:42:22
2024-1-1
文章目录
1599. 经营摩天轮的最大利润
思路:
1.对摩天轮的运转情况进行模拟,
2.遍历数组,分别计算每次的当前利润、最大利润、上一轮遗留的人数
3.循环的条件为:数组没走完 、数组走完了,还剩等待的游客两种情况都进入循环
4.计算当前轮次的人 :
-
情况一(数组没走完): 第i轮之前到达地游客数量customers[i] + 上一轮留下的人lostCustomers
-
情况二(数组走完了,还剩等待的游客):当前轮次的人== 留下的人
5.如果当前轮次人数大于4,遗留的人数为= 当前轮次人数减4
- 当前的利润为每轮四个人的票钱 - 一次运行成本,利润累加
6.如果当前轮次人数小于4,剩下的人都乘坐,当前利润为这批不满4人乘客的票钱 - 一次运行成本
7.利润比较,如果当前轮利润更大,轮次加一
public int minOperationsMaxProfit(int[] customers, int boardingCost, int runningCost) {
// 最小运行次数,即答案
int minTimes = -1;
// 最大利润
int maxMoney = 0;
// 当前利润
int curMoney = 0;
// 上一轮遗留下来的人
int lostCustomers = 0;
// 当还有剩下人,或者i没遍历完,开始遍历
for (int i = 0; i < customers.length || lostCustomers > 0; i++) {
// 计算当前轮次的人
int curCustomers;
if (i < customers.length){
curCustomers = lostCustomers + customers[i];
}else {
curCustomers = lostCustomers;
}
// 大于4,则最多上车四个;否则则有几个上车几个
if ( curCustomers > 4){
lostCustomers = curCustomers - 4;
curMoney += 4 * boardingCost - runningCost;
}else {
lostCustomers = 0;
curMoney += curCustomers * boardingCost - runningCost;
}
// 如果当前轮次的利润大于备案的最大利润,则更新轮次和最大利润
if (curMoney > maxMoney){
minTimes = i + 1;
maxMoney = curMoney;
}
}
return minTimes;
}
文章来源:https://blog.csdn.net/m0_64003319/article/details/135326343
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!