4010. Maximize Pair Strength Using GCD
Description
You are given an integer array nums.
Choose exactly one pair of distinct indices i and j. The strength of the pair is defined as (nums[i] * nums[j]) / gcd(nums[i], nums[j])2.
Return the maximum strength over all possible pairs.
The term gcd(a, b) denotes the greatest common divisor of a and b.
Β
Example 1:
Input: nums = [2,3,5]
Output: 15
Explanation:
Choosing i = 1 and j = 2 gives strength (3 * 5) / gcd(3, 5)2 = 15 / 1 = 15, which is the maximum over all pairs.
Example 2:
Input: nums = [4,6,8]
Output: 12
Explanation:
Choosing i = 1 and j = 2 gives strength (6 * 8) / gcd(6, 8)2 = 48 / 4 = 12, which is the maximum over all pairs.
Example 3:
Input: nums = [3,3]
Output: 1
Explanation:
Choosing i = 0 and j = 1 gives strength (3 * 3) / gcd(3, 3)2 = 9 / 9 = 1, the maximum over all pairs.
Β
Constraints:
2 <= nums.length <= 20001 <= nums[i] <= 105
Solutions
Solution 1: Enumeration
We directly enumerate all pairs \((i, j)\) where \(i < j\), calculate the strength of each pair \(\frac{\textit{nums}[i] \times \textit{nums}[j]}{\gcd(\textit{nums}[i], \textit{nums}[j])^2}\), and take the maximum.
The greatest common divisor \(\gcd\) can be computed using the Euclidean algorithm.
The time complexity is \(O(n^2 \times \log M)\), where \(n\) is the length of the array \(\textit{nums}\) and \(M\) is the maximum value in the array. The space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |