LeetCode 第 224 场周赛 ( rank 1127 / 3794 )

LeetCode 第 224 场周赛


在这里插入图片描述



第一题: 5653. 可以形成最大正方形的矩形数目

在这里插入图片描述

模拟、暴力即可


AC Code

class Solution {
    
    
    public int countGoodRectangles(int[][] r) {
    
    
        int ans = 0, mx = 0;
        Map<Integer, Integer> map = new HashMap<>();
        int len = r.length;
        for(int i = 0; i < len; i++) {
    
    
            int mn = Math.min(r[i][0], r[i][1]);
            int cnt = map.getOrDefault(mn, 0);
            map.put(mn, cnt + 1);
            mx = Math.max(mn, mx);
        }
        ans = map.get(mx);
        return ans;
    }
}



第二题: 5243. 同积元组

在这里插入图片描述


分析题目, 看似好像是全排列,枚举所有组合情况

其实当 a ∗ b = = c ∗ d a * b == c * d ab==cd 并且 a ! = b ! = c ! = d a != b != c != d a!=b!=c!=d 的时候,每找到一个符合条件的四个数, 就对应了 8 个组合方式

那么就可以将问题转化成找有几个两个值相乘后是相等的.


[1,2,4,5,10] -> 1 ∗ 2 = 2 , 1 ∗ 4 = 4 , 5 , 10 , 8 , 10 , 20 , 20 , 50 1*2=2, 1*4 = 4, 5, 10, 8, 10, 20, 20, 50 12=2,14=4,5,10,8,10,20,20,50

所以就有两个10、两个20,分别为 a ∗ b a * b ab c ∗ d c * d cd 的值,所以有两组符合等式的, 他们共有 2 * 8 种组合方式.


根据 a ∗ b = = c ∗ d a * b == c * d ab==cd, 当两个数相等的值有 2 个的时候,可以组成一种,当两个数相等的值有 3 个的时候,可以 3 种,4个的时候,组成 6 种… 规律即为 ( i - 1) 个 + (i - 1) 个时的组合数, 代码中即为


AC Code

class Solution {
    
    
    public int tupleSameProduct(int[] nums) {
    
    
        int ans = 0, len = nums.length;
        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < len; i++) {
    
    
            while(i + 1 < len && nums[i + 1] == nums[i]) i++;
            for(int j = i + 1; j < len; j++) {
    
    
                while(j + 1 < len && nums[j + 1] == nums[j]) j++;
                int tmp = nums[i] * nums[j];
                int cnt = map.getOrDefault(tmp, 0);
                map.put(tmp, cnt + 1);
            }
        } 
        
        //System.out.println(map);
        int[] arr = new int[1001];
        arr[2] = 1; arr[3] = 3; arr[4] = 6;
        for(int i = 5; i < 1001; i++) arr[i] = arr[i - 1] + i - 1;
        
        for(Integer val : map.values()) {
    
    
            if(val > 1) {
    
    
                ans = ans + arr[val] * 8;
            }
        }
        
        return ans;
    }
    
}



第三题: 5655. 重新排列后的最大子矩阵

在这里插入图片描述

待补


AC Code





第四题: 5529. 猫和老鼠 II

在这里插入图片描述


待补


AC Code




猜你喜欢

转载自blog.csdn.net/qq_43765535/article/details/112736823
今日推荐