本文主要是介绍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_1465 切割后面积最大的蛋糕的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!