You are given
Two rectangles
Return the number of pairs of interchangeable rectangles in rectangles.
Output: 6
Explanation: The following are the interchangeable pairs of rectangles by index (0-indexed):
Rectangle 0 with rectangle 1: 4/8 == 3/6.
Rectangle 0 with rectangle 2: 4/8 == 10/20.
Rectangle 0 with rectangle 3: 4/8 == 15/30.
Rectangle 1 with rectangle 2: 3/6 == 10/20.
Rectangle 1 with rectangle 3: 3/6 == 15/30.
Rectangle 2 with rectangle 3: 10/20 == 15/30.
Output: 0
Explanation: There are no interchangeable pairs of rectangles.
Constraints:
1 <= nums.length <= 2 * 104 -1000 <= nums[i] <= 1000 -107 <= k <= 107
Contents
Solution 1 - Store ratio counts and find unique pairs of answers
In this approach, we are going to compute width-to-height ratio and store them into a
Implementation steps:
-
Create a
HashMap to store width-to-height counts, and call itratioCount . -
Iterate through each rectangle from input
rectangles . -
Next, calculate the width-to-height ratio for each rectangle.
double ratio = (double) rectangle[0] / rectangle[1]; -
In next step, store this into
ratioCount HashMap , if theratio is already exist, increment value by1 , otherwise add1 . -
Now, go through each ratio count stored in
ratioCount HashMap , calculate the number of pairs that can be formed using the count of rectangles with that ratio.-
The number of pairs for a count
n of rectangles with the same ratio is
For example, if the input isrectangles = [[4,8],[3,6],[10,20],[15,30]] , all the rectangles will have same ratio0.5 and the count of rectangles is4 , to get the unique pairs of rectangles we can use4 *3 / 2 .
Unique pairs are[4,8],[3,6] ,[4,8],[10,20] ,[4,8],[15,30] ,[3,6],[10,20] ,[3,6],[15,30] and[10,20],[15,30] . -
The number of pairs for a count
Complexity Analysis:
Time complexity: Above code runs in O(n) time where
Space complexity: O(n), since we are storing width-to-height ratios into a
Above implementations source code can be found at