Overflow in intermediate arithmetic
Wrong move: Temporary multiplications exceed integer bounds.
Usually fails on: Large inputs wrap around unexpectedly.
Fix: Use wider types, modular arithmetic, or rearranged operations.
Build confidence with an intuition-first walkthrough focused on math fundamentals.
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:
W should not be larger than the length L, which means L >= W.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 <= 107Problem summary: 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.
Start with the most direct exhaustive search. That gives a correctness anchor before optimizing.
Pattern signal: Math
4
37
122122
Source-backed implementations are provided below for direct study and interview prep.
// Accepted solution for LeetCode #492: Construct the Rectangle
class Solution {
public int[] constructRectangle(int area) {
int w = (int) Math.sqrt(area);
while (area % w != 0) {
--w;
}
return new int[] {area / w, w};
}
}
// Accepted solution for LeetCode #492: Construct the Rectangle
func constructRectangle(area int) []int {
w := int(math.Sqrt(float64(area)))
for area%w != 0 {
w--
}
return []int{area / w, w}
}
# Accepted solution for LeetCode #492: Construct the Rectangle
class Solution:
def constructRectangle(self, area: int) -> List[int]:
w = int(sqrt(area))
while area % w != 0:
w -= 1
return [area // w, w]
// Accepted solution for LeetCode #492: Construct the Rectangle
struct Solution;
impl Solution {
fn construct_rectangle(area: i32) -> Vec<i32> {
let mut max = (area as f64).sqrt().floor() as i32;
while area % max != 0 {
max -= 1;
}
vec![area / max, max]
}
}
#[test]
fn test() {
assert_eq!(Solution::construct_rectangle(4), vec![2, 2]);
}
// Accepted solution for LeetCode #492: Construct the Rectangle
// Auto-generated TypeScript example from java.
function exampleSolution(): void {
}
// Reference (java):
// // Accepted solution for LeetCode #492: Construct the Rectangle
// class Solution {
// public int[] constructRectangle(int area) {
// int w = (int) Math.sqrt(area);
// while (area % w != 0) {
// --w;
// }
// return new int[] {area / w, w};
// }
// }
Use this to step through a reusable interview workflow for this problem.
Simulate the process step by step — multiply n times, check each number up to n, or iterate through all possibilities. Each step is O(1), but doing it n times gives O(n). No extra space needed since we just track running state.
Math problems often have a closed-form or O(log n) solution hidden behind an O(n) simulation. Modular arithmetic, fast exponentiation (repeated squaring), GCD (Euclidean algorithm), and number theory properties can dramatically reduce complexity.
Review these before coding to avoid predictable interview regressions.
Wrong move: Temporary multiplications exceed integer bounds.
Usually fails on: Large inputs wrap around unexpectedly.
Fix: Use wider types, modular arithmetic, or rearranged operations.