题目
给你一个数组 rectangles ,其中 rectangles[i] = [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。
如果存在 k 同时满足 k <= li 和 k <= wi ,就可以将第 i 个矩形切成边长为 k 的正方形。例如,矩形 [4,6] 可以切成边长最大为 4 的正方形。
设 maxLen 为可以从矩形数组 rectangles 切分得到的 最大正方形 的边长。
请你统计有多少个矩形能够切出边长为 maxLen 的正方形,并返回矩形 数目 。
来源:力扣(LeetCode)
解答
依次遍历每一个矩形即可。
当遍历到当前矩形时,得到当前矩形可以得到的最大正方形的边长,与保存的maxLen进行比较,如果大于maxLen,证明maxLen易值,且ret(即可获得maxLen正方形数量)重置为1;如果等于maxLen,则ret自增1。
最后返回ret即可。
具体见代码:
class Solution {
public:
int countGoodRectangles(vector<vector<int>> &rectangles) {
int n = rectangles.size();
int maxLen = 0;
int ret = 0;
for (int i = 0; i < n; ++i) {
int curLen = min(rectangles[i][0], rectangles[i][1]);
if (curLen > maxLen) {
maxLen = curLen;
ret = 1;
} else if (curLen == maxLen) {
ret++;
}
}
return ret;
}
};

京公网安备 11010502036488号