【LeetCode 每日一题】1599. 经营摩天轮的最大利润(medium)

1599. 经营摩天轮的最大利润


  纯模拟,没什么技巧,按照题目描述的规则走完一趟就行,中途维护一个利润最大值和当时的旋转次数。唯一需要注意的是,循环结束的条件并不是数组遍历完,而是后面没有新游客来了且当前的已经服务完了,即数组已经遍历完了且当前等待游客为0。

class Solution {
public:
    int minOperationsMaxProfit(vector<int>& customers, int boardingCost, int runningCost) {
        int len=customers.size();
        int count=0;//当前等待游客数量
        int res=-1;//旋转次数
        int sum=0;//当前利润
        int m_sum=0;//最大利润
        for(int i=0;i<len||count;i++){
            if(i<len){
                count+=customers[i];
            }
            int k=count>=4?4:count;
            sum+=k*boardingCost-runningCost;
            if(sum>m_sum){
                res=i+1;
                m_sum=sum;
            }
            count-=k;
            // cout<
        }
        return res;
    }
};

你可能感兴趣的:(leetcode,算法)