给你一个数组rectangles
,其中rectangles[i] = [l_i, w_i]
表示第i
个矩形的长度为li
、宽度为wi
。
如果存在k
同时满足k <= l_i
和k <= w_i
,就可以将第i
个矩形切成边长为k
的正方形。例如,矩形[4,6]
可以切成边长最大为4
的正方形。
设maxLen
为可以从矩形数组rectangles
切分得到的最大正方形的边长。
请你统计有多少个矩形能够切出边长为maxLen
的正方形,并返回矩形数目。
示例 1:
输入:rectangles = [[5,8],[3,9],[5,12],[16,5]]
输出:3
解释:能从每个矩形中切出的最大正方形边长分别是 [5,3,5,5] 。
最大正方形的边长为 5 ,可以由 3 个矩形切分得到。
示例 2:
输入:rectangles = [[2,3],[3,7],[4,3],[3,7]]
输出:3
提示:
1 <= rectangles.length <= 1000
rectangles[i].length == 2
1 <= l_i, w_i <= 10^9
l_i != w_i
1.直觉的方法
Python:
class Solution:
def countGoodRectangles(self, rectangles: List[List[int]]) -> int:
temp = [min(item) for item in rectangles]
max_v = max(temp)
count = 0
for item in temp:
if item == max_v:
count += 1
return count
Java:
class Solution {
public int countGoodRectangles(int[][] rectangles) {
int[] lis = new int[rectangles.length];
for(int i = 0; i < lis.length; i++)
{
lis[i] = Math.min(rectangles[i][0], rectangles[i][1]);
}
int value = Arrays.stream(lis).max().getAsInt();
int total = 0;
for(int a: lis)
{
if(a == value)
total += 1;
}
return total;
}
}
2.一次遍历
留言