[E模拟] lc1725. 可以形成最大正方形的矩形数目(模拟+周赛224_1)

1. 题目来源

链接:1725. 可以形成最大正方形的矩形数目

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;
    }
};

猜你喜欢

转载自blog.csdn.net/yl_puyu/article/details/112768509