题目
类型:双指针
解题思路
记 l 和 w 为某个矩形的长度和宽度,设 k 为可以从这个矩形中切出的最大正方形的边长,则有
我们遍历输入数组,维护两个变量, 表示遍历到当前矩形时的所有可以切出的最大正方形的边长的最大值,
表示可以切出边长为
的正方形的个数。计算当前的 k,当
时,对
进行加 1 操作;当
时,则更新
为 k,并把
重置为 1。
代码
class Solution {
public int countGoodRectangles(int[][] rectangles) {
int res = 0, maxLen = 0;
for (int[] rectangle : rectangles) {
int l = rectangle[0], w = rectangle[1];
int k = Math.min(l, w);
if (k == maxLen) {
++res;
} else if (k > maxLen) {
res = 1;
maxLen = k;
}
}
return res;
}
}