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;
        }