2024.1.1力扣每日一题——经营摩天轮的最大利润

2024-01-02 22:57:40

题目来源

力扣每日一题;题序:1599

我的题解

方法一 模拟

计算当前上摩天轮的人数和等待的人数就可以得到该轮次的利润,然后一只更新最大利润就可以了。

时间复杂度: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;
    }

tips

  • 在力扣刷题千万要记得把调试时的打印语句去除,不然会影响时间复杂度。
  • 这道题本身其实感觉有点问题,根据示例来看,都没有考虑最后在摩天轮上的游客下来的运行费用。

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

文章来源:https://blog.csdn.net/weixin_42075274/article/details/135351296
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。