【每日一题-leetcode】939. 最小面积矩形

本文深入探讨了如何通过给定点集确定平行于坐标轴的最小面积矩形问题。介绍了算法思路,即利用集合存储点坐标,遍历所有点对判断是否构成矩形对角线,并计算可能的最小矩形面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

939. 最小面积矩形

  1. 最小面积矩形

难度中等43

给定在 xy 平面上的一组点,确定由这些点组成的矩形的最小面积,其中矩形的边平行于 x 轴和 y 轴。

如果没有任何矩形,就返回 0。

示例 1:

输入:[[1,1],[1,3],[3,1],[3,3],[2,2]]
输出:4

示例 2:

输入:[[1,1],[1,3],[3,1],[3,3],[4,1],[4,3]]
输出:2
	public int minAreaRect(int[][] points) {
            Set<Integer> pointSet = new HashSet<Integer>();
            //将每个下标相加添加到set中,如果有重复的会去重。
            for(int [] point : points){
                pointSet.add(40001* point[0]+point[1]);
            }
    
            int ans = Integer.MAX_VALUE;//求最小值 应该设置一个最大值
            for(int i=0;i<points.length;i++){
                for(int j=i+1;j<points.length;j++){
                    //两个坐标不在同一行 同一列,那么势必就是对角线关系。
                    if(points[i][0]!=points[j][0] && points[i][1]!=points[j][1]){
                        if(pointSet.contains(40001 * points[i][0]+ points[j][1]) && pointSet.contains(40001 * points[j][0]+points[i][1])){
                            ans = Math.min(Math.abs(points[j][0]-points[i][0])*Math.abs(points[j][1]-points[i][1]),ans);
                        }
                    }
                }
            }
            return ans < Integer.MAX_VALUE ? ans : 0;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qxlxi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值