leetcode_1465 切割后面积最大的蛋糕

1. 题意

给定一个(w, h)的矩阵,再分别给定横轴、纵轴上分割直线的两个数组。求分割区域的最大值。

切割后面积最大的蛋糕

2. 题解

先将两个横纵分割数组排序,再分别取相邻坐标最大值相乘即可。

class Solution {
public:
    int getMaxDiff(const vector<int> &arr, int vMost)
    {   
        int sz = arr.size();
        int ans = 0; 

        for ( int i = 1; i < sz; ++i) {
            ans = max(arr[i] - arr[i - 1], ans);
        }
        ans = max(arr[0], ans);
        ans = max(vMost - arr[sz - 1], ans);

        return ans;
    }

    int maxArea(int h, int w, vector<int>& horizontalCuts, vector<int>& verticalCuts) {
        

        sort(horizontalCuts.begin(), horizontalCuts.end() );
        sort(verticalCuts.begin(), verticalCuts.end() );
        horizontalCuts.push_back(h);
        verticalCuts.push_back(w);


        auto calMax = [](vector<int> &arr)->int {
            int res = 0, pre = 0;
            for (int i : arr) {
                res = max( i -  pre, res );
                pre = i;
            }
            return res; 
        };
        
        int MOD  = 1e9 + 7;
        int maxDisW = calMax(horizontalCuts) % MOD ;
        int maxDisH = calMax(verticalCuts) % MOD ;

        return 1l * maxDisH * maxDisW % MOD ;
    }
};

你可能感兴趣的:(leetcode,leetcode,算法,职场和发展)