1. 程式人生 > 其它 >LeetCode 5653. 可以形成最大正方形的矩形數目

LeetCode 5653. 可以形成最大正方形的矩形數目

技術標籤:LeetCode

文章目錄

1. 題目

給你一個數組 rectangles ,其中 rectangles[i] = [li, wi] 表示第 i 個矩形的長度為 li 、寬度為 wi 。

如果存在 k 同時滿足 k <= lik <= wi ,就可以將第 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 <= li, wi <= 10^9 li != wi

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/number-of-rectangles-that-can-form-the-largest-square


著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

2. 解題

  • 計數
class Solution {
public:
    int countGoodRectangles(vector<vector<int>>& rectangles) {
        int maxlen = 0, count = 0;
        unordered_map<int, int> m;
        for(auto& rec : rectangles)
        {
            int len = min(
rec[0], rec[1]); ++m[len]; if(len >= maxlen) { maxlen = len; count = m[len]; } } return count; } };

52 ms 17.9 MB C++


我的CSDN部落格地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
Michael阿明