In this** Leetcode Construct the Rectangle problem solution** A web developer needs to know how to design a web page's size. So, given a specific rectangular web page’s area, your job by now is to design a rectangular web page, whose length L and width W satisfy the following requirements:

The area of the rectangular web page you designed must equal to the given target area.

The width W should not be larger than the length L, which means L >= W.

The difference between length L and width W should be as small as possible.

Return an array [L, W] where L and W are the length and width of the web page you designed in sequence.

## Problem solution in Python.

class Solution: def constructRectangle(self, area: int) -> List[int]: from functools import reduce def factors(n): return list(set(reduce(list.__add__, ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))) l1 = factors(area) l2 = [] max_diff = area - 1 for i in l1: a = area//i if i >= a and i - a < max_diff: max_diff = i - a l2.append([i]) if not l2: return [area, 1] else: b = min(l2)[0] return [b, area//b]

## Problem solution in Java.

class Solution { public int[] constructRectangle(int area) { int sqrt = (int)Math.sqrt(area); for(int i = sqrt; i > 0; i--){ if(area % i == 0) return new int[]{area/i, i}; } return new int[]{area, 1}; } }

## Problem solution in C++.

vector<int> constructRectangle(int area) { for(int mid = sqrt(area); mid>0; mid--) if (!(area%mid)) return {area/mid, mid}; }

## 0 Comments