1. 题目来源
2. 题目解析
模拟水题,比赛过程中理解错了题意,直接 WA
了三发…吐了。
思路:
- 遍历一遍找到最大的正方形边长。
- 再遍历一遍计数合法的正方形个数即可。
当然一次遍历也可以。
- 时间复杂度: O ( n ) O(n) O(n)。
- 空间复杂度: O ( 1 ) O(1) O(1)
代码:
class Solution {
public:
int countGoodRectangles(vector<vector<int>>& rectangles) {
int res = 0, m = 0;
for (auto &e : rectangles) m = max(m, min(e[0], e[1]));
for (auto &e : rectangles)
if (e[0] >= m && e[1] >= m)
res ++ ;
return res;
}
};
class Solution {
public:
int countGoodRectangles(vector<vector<int>>& rectangles) {
int res = 0, m = 0;
for (auto &e : rectangles) {
if (m < min(e[0], e[1])) {
m = min(e[0], e[1]);
res = 1;
} else if (m == min(e[0], e[1])) {
++ res;
}
}
return res;
}
};