Algorithm


Problem Name: 492. Construct the Rectangle

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:

  1. The area of the rectangular web page you designed must equal to the given target area.
  2. The width W should not be larger than the length L, which means L >= W.
  3. 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.

 

Example 1:

Input: area = 4
Output: [2,2]
Explanation: The target area is 4, and all the possible ways to construct it are [1,4], [2,2], [4,1]. 
But according to requirement 2, [1,4] is illegal; according to requirement 3,  [4,1] is not optimal compared to [2,2]. So the length L is 2, and the width W is 2.

Example 2:

Input: area = 37
Output: [37,1]

Example 3:

Input: area = 122122
Output: [427,286]

 

Constraints:

  • 1 <= area <= 107
 

Code Examples

#1 Code Example with Java Programming

Code - Java Programming


class Solution {
    public int[] constructRectangle(int area) {
        int[] ans = new int[2];
        
        if(area == 0){
            return ans;
        }
        
        int a = (int)Math.sqrt(area);
        while(area%a != 0) {
            a--;
        }
        
        int b = area/a;
        ans[0] = b;
        ans[1] = a;
        
        return ans;
    }
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
area = 4

Output

x
+
cmd
[2,2]

#2 Code Example with Javascript Programming

Code - Javascript Programming


const constructRectangle = function(area) {
  let w = Math.sqrt(area) >> 0;
  while (area % w != 0) w--;
  return [(area / w) >> 0, w];
};
Copy The Code & Try With Live Editor

Input

x
+
cmd
area = 4

Output

x
+
cmd
[2,2]

#3 Code Example with Python Programming

Code - Python Programming


class Solution:
    def constructRectangle(self, area):
        """
        :type area: int
        :rtype: List[int]
        """
        import math
        l, w = int(math.sqrt(area)), int(math.sqrt(area))
        while l*w!=area:
            if area%w==0: l=int(area/w)
            else: w-=1
        return [l,w]
Copy The Code & Try With Live Editor

Input

x
+
cmd
area = 37

Output

x
+
cmd
[37,1]

#4 Code Example with C# Programming

Code - C# Programming


using System;

namespace LeetCode
{
    public class _0492_ConstructTheRectangle
    {
        public int[] ConstructRectangle(int area)
        {
            var w = (int)Math.Sqrt(area);
            while (area % w != 0) w--;
            return new int[] { area / w, w };
        }
    }
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
area = 37

Output

x
+
cmd
[37,1]
Advertisements

Demonstration


Previous
#491 Leetcode Non-decreasing Subsequences Solution in C, C++, Java, JavaScript, Python, C# Leetcode
Next
#493 Leetcode Reverse Pairs Solution in C, C++, Java, JavaScript, Python, C# Leetcode