给你一个数组rectangles,其中rectangles[i] = [l_i, w_i]表示第i个矩形的长度为li、宽度为wi

如果存在k同时满足k <= l_ik <= 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.一次遍历

最后修改日期: 2022年2月5日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。