Skip to content

Files

Latest commit

be22de5 · May 27, 2023

History

History
146 lines (118 loc) · 3.67 KB

File metadata and controls

146 lines (118 loc) · 3.67 KB

中文文档

Description

You are given an array rectangles where rectangles[i] = [li, wi] represents the ith rectangle of length li and width wi.

You can cut the ith rectangle to form a square with a side length of k if both k <= li and k <= wi. For example, if you have a rectangle [4,6], you can cut it to get a square with a side length of at most 4.

Let maxLen be the side length of the largest square you can obtain from any of the given rectangles.

Return the number of rectangles that can make a square with a side length of maxLen.

 

Example 1:

Input: rectangles = [[5,8],[3,9],[5,12],[16,5]]
Output: 3
Explanation: The largest squares you can get from each rectangle are of lengths [5,3,5,5].
The largest possible square is of length 5, and you can get it out of 3 rectangles.

Example 2:

Input: rectangles = [[2,3],[3,7],[4,3],[3,7]]
Output: 3

 

Constraints:

  • 1 <= rectangles.length <= 1000
  • rectangles[i].length == 2
  • 1 <= li, wi <= 109
  • li != wi

Solutions

Python3

class Solution:
    def countGoodRectangles(self, rectangles: List[List[int]]) -> int:
        ans = mx = 0
        for l, w in rectangles:
            t = min(l, w)
            if mx < t:
                mx, ans = t, 1
            elif mx == t:
                ans += 1
        return ans

Java

class Solution {
    public int countGoodRectangles(int[][] rectangles) {
        int ans = 0, mx = 0;
        for (int[] r : rectangles) {
            int t = Math.min(r[0], r[1]);
            if (mx < t) {
                mx = t;
                ans = 1;
            } else if (mx == t) {
                ++ans;
            }
        }
        return ans;
    }
}

TypeScript

function countGoodRectangles(rectangles: number[][]): number {
    let maxLen = 0,
        ans = 0;
    for (let [l, w] of rectangles) {
        let k = Math.min(l, w);
        if (k == maxLen) {
            ans++;
        } else if (k > maxLen) {
            maxLen = k;
            ans = 1;
        }
    }
    return ans;
}

C++

class Solution {
public:
    int countGoodRectangles(vector<vector<int>>& rectangles) {
        int ans = 0, mx = 0;
        for (auto& r : rectangles) {
            int t = min(r[0], r[1]);
            if (mx < t) {
                mx = t;
                ans = 1;
            } else if (mx == t)
                ++ans;
        }
        return ans;
    }
};

Go

func countGoodRectangles(rectangles [][]int) int {
	ans, mx := 0, 0
	for _, r := range rectangles {
		t := r[0]
		if t > r[1] {
			t = r[1]
		}
		if mx < t {
			mx, ans = t, 1
		} else if mx == t {
			ans++
		}
	}
	return ans
}

...