一、Description
题目描述:
给定一些点集,找出由这些组成的面积最小的矩形,矩形的长和宽分别平行于x、y轴。如果不存在这样的矩形,返回0。
Example 1:
Input: [[1,1],[1,3],[3,1],[3,3],[2,2]] Output: 4
Example 2:
Input: [[1,1],[1,3],[3,1],[3,3],[4,1],[4,3]] Output: 2
二、Analyzation
定义一个map,key中存放每个点的横坐标,value为一个Set集合,存放的是横坐标等于key的所有纵坐标的集合。
遍历points,将所有的点放入map和对应的set中后,通过判断任意两个横坐标和纵坐标不相等的点A和B(AB构成一个矩形的对角线),如果A的横坐标对应的set中存在B的纵坐标而且B的横坐标对应的set中存在A的纵坐标,则存在一个矩形使得A、B为对角上的两个点,计算该矩形的面积并与min进行比较,最后返回min。
三、Accepted code
class Solution {
public int minAreaRect(int[][] points) {
if (null == points) {
return 0;
}
HashMap<Integer, HashSet<Integ