题目
1725.可以形成最大正方形的矩形数目
题目大意
给你一个数组 rectangles
,其中 rectangles[i] = [li, wi]
表示第 i
个矩形的长度为 li
、宽度为 wi
。
如果存在 k
同时满足 k <= l_i
和 k <= wi
,就可以将第 i
个矩形切成边长为 k
的正方形。例如,矩形 [4,6]
可以切成边长最大为 4
的正方形。
设 maxLen
为可以从矩形数组 rectangles
切分得到的 最大正方形 的边长。
请你统计有多少个矩形能够切出边长为 maxLen
的正方形,并返回矩形 数目 。
样例
数据规模
思路
第
i
i
i个矩形切成边长为的正方形的边长实际上就是第
i
i
i个长方形的
m
i
n
(
l
i
,
w
i
)
min(l_i,w_i)
min(li,wi),即min(rectangles[i][0],rectangles[i][1])
,那么考虑取
m
a
x
(
m
i
n
(
r
e
c
t
a
n
g
l
e
s
[
i
]
[
0
]
,
r
e
c
t
a
n
g
l
e
s
[
i
]
[
1
]
)
(
i
∈
[
0
,
n
−
1
]
)
)
max(min(rectangles[i][0],rectangles[i][1])(i∈[0,n-1]))
max(min(rectangles[i][0],rectangles[i][1])(i∈[0,n−1]))为最大正方形的边长。设定
m
a
x
x
maxx
maxx为最大正方形的边长,每次需要更新
m
a
x
x
maxx
maxx的时候,需要将
c
n
t
cnt
cnt置为
1
1
1(
c
n
t
cnt
cnt表示该边长的正方形的个数),如果当前长方形可切出的正方形边长为
m
a
x
x
maxx
maxx,那么
c
n
t
+
+
cnt++
cnt++。最后返回答案
c
n
t
cnt
cnt。
代码
class Solution {
public:
int countGoodRectangles(vector<vector<int>>& rectangles) {
int maxx=0,cnt=0;
for(int i=0;i<rectangles.size();i++){
int l=min(rectangles[i][0],rectangles[i][1]);
if(maxx<l){
maxx=l;
cnt=1;
}
else if(maxx==l){
cnt++;
}
}
return cnt;
}
};