# Find minimum area of rectangle with given set of coordinates

Given an array of set of points in the **X-Y plane**. The task is to find the minimum area of a rectangle that can be formed from these points. The sides of the rectangle should be parallel to the X and Y axes. If a rectangle cannot be formed with the given points then print .

**Examples:**

Input:arr[][] = [[1, 1], [1, 3], [3, 1], [3, 3], [2, 2]]

Output:4

The only rectangle possible will be formed with the points (1, 1), (1, 3), (3, 1) and (3, 3)

Input:arr[][] = [[1, 1], [1, 3], [3, 1], [3, 3], [4, 1], [4, 3]]

Output:2

**Approach:** Group the points by coordinates, so that points on straight vertical lines are grouped together. Then, for every pair of points in a group, for eg. coordinates (X, Y1) and (X, Y2), we check for the smallest rectangle with this pair of points as the rightmost edge of the rectangle to be formed. We can do this by keeping track of all other pairs of points we’ve visited before. Finally return the minimum possible area of the rectangle obtained.

Below is the implementation of the above approach:

`# Python Implementation of above approach ` `import` `collections ` ` ` `# function to find minimum area of Rectangle ` `def` `minAreaRect(A): ` ` ` ` ` `# creating empty columns ` ` ` `columns ` `=` `collections.defaultdict(` `list` `) ` ` ` ` ` `# fill columns with coordinates ` ` ` `for` `x, y ` `in` `A: ` ` ` `columns[x].append(y) ` ` ` ` ` `lastx ` `=` `{} ` ` ` `ans ` `=` `float` `(` `'inf'` `) ` ` ` ` ` `for` `x ` `in` `sorted` `(columns): ` ` ` `column ` `=` `columns[x] ` ` ` `column.sort() ` ` ` `for` `j, y2 ` `in` `enumerate` `(column): ` ` ` `for` `i ` `in` `range` `(j): ` ` ` `y1 ` `=` `column[i] ` ` ` ` ` `# check if rectangle can be formed ` ` ` `if` `(y1, y2) ` `in` `lastx: ` ` ` `ans ` `=` `min` `(ans, (x ` `-` `lastx[y1, y2]) ` `*` `(y2 ` `-` `y1)) ` ` ` `lastx[y1, y2] ` `=` `x ` ` ` ` ` `if` `ans < ` `float` `(` `'inf'` `): ` ` ` `return` `ans ` ` ` `else` `: ` ` ` `return` `0` ` ` `# Driver code ` `A ` `=` `[[` `1` `, ` `1` `], [` `1` `, ` `3` `], [` `3` `, ` `1` `], [` `3` `, ` `3` `], [` `2` `, ` `2` `]] ` `print` `(minAreaRect(A)) ` |

*chevron_right*

*filter_none*

**Output:**

4

## Recommended Posts:

- Coordinates of rectangle with given points lie inside
- Ratio of area of a rectangle with the rectangle inscribed in it
- Area and Perimeter of Rectangle in PL/SQL
- Maximum area of rectangle possible with given perimeter
- Sum of Area of all possible square inside a rectangle
- Program for Area And Perimeter Of Rectangle
- Minimum length of square to contain at least half of the given Coordinates
- Area of the biggest possible rhombus that can be inscribed in a rectangle
- Area of the biggest ellipse inscribed within a rectangle
- Rectangle with Maximum Area using Java Pair
- Number of squares of maximum area in a rectangle
- Area of largest triangle that can be inscribed within a rectangle
- Area of Largest rectangle that can be inscribed in an Ellipse
- Maximum area rectangle by picking four sides from array
- Find all possible coordinates of parallelogram

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.