2024.1.1力扣每日一题——经营摩天轮的最大利润
2024-01-02 22:57:40
题目来源
我的题解
方法一 模拟
计算当前上摩天轮的人数和等待的人数就可以得到该轮次的利润,然后一只更新最大利润就可以了。
时间复杂度:O(n)。n数组的长度
空间复杂度:O(1)
public int minOperationsMaxProfit(int[] customers, int boardingCost, int runningCost) {
int profit=0;//最大利润
int res=-1;//最优的轮数
int remain=0;//等待的人数
int all=0;//已经参与的人数
int i=0;
while(remain>0||i<customers.length){
int cur=remain;
if(i<customers.length)
cur+=customers[i];
//参与人数是当前的所有人(等待人数小于4)或者直接上4人
all+=Math.min(cur,4);
//等待人数更新
remain=cur>=4?cur-4:0;
//计算利润
int curprofit=boardingCost*all-(i+1)*runningCost;
// System.out.println(curprofit);
//更新最大利润
if(profit<curprofit){
profit=curprofit;
res=i+1;
}
i++;
}
return res;
}
- 在力扣刷题千万要记得把调试时的打印语句去除,不然会影响时间复杂度。
- 这道题本身其实感觉有点问题,根据示例来看,都没有考虑最后在摩天轮上的游客下来的运行费用。
有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~
文章来源:https://blog.csdn.net/weixin_42075274/article/details/135351296
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!