Maximum Pairwise Product 1 - Given only Positive Integers
EasyUpdated: Aug 2, 2025
Problem
Find the maximum product of two distinct numbers in a sequence of non-negative integers.
Examples
Example 1:
Input: nums = [1, 4, 3, 6, 7, 0]
Output: [6, 7]
Explanation: The pair (6, 7) gives the highest product of 42.
Solution
Method 1 - Use max and second maximum
We have already seen the problem with both positive and negative integers - [Maximum Pairwise Product 2 - Find pair with maximum product in array of Integers](maximum-pairwise-product-2-find-pair-with-maximum-product-in-array-of-integers). Just use [Maximum Pairwise Product 2 - Find pair with maximum product in array of Integers#Method 3 - Using Second Max and Second Min element](maximum-pairwise-product-2-find-pair-with-maximum-product-in-array-of-integers.md/#method-3---using-second-max-and-second-min-element), and just just use first and second max to find the answer.
So, the approach is:
- Traverse the array to identify the two largest distinct values.
- Return the product of these two values.
Code
Java
public class Solution {
public int maxProduct(int[] nums) {
if (nums.length < 2) {
return 0;
}
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE;
for (int num : nums) {
if (num > max1) {
max2 = max1;
max1 = num;
} else if (num > max2 && num != max1) {
max2 = num;
}
}
return max1 * max2;
}
public static void main(String[] args) {
Solution solution = new Solution();
int[] nums1 = {1, 4, 3, 6, 7, 0};
System.out.println("The maximum product of two distinct numbers is: " + solution.maxProduct(nums1)); // Output: 42
}
}
Python
class Solution:
def maxProduct(self, nums):
if len(nums) < 2:
return 0
max1 = max2 = float('-inf')
for num in nums:
if num > max1:
max2 = max1
max1 = num
elif num > max2 and num != max1:
max2 = num
return max1 * max2
# Example usage
solution = Solution()
nums1 = [1, 4, 3, 6, 7, 0]
print(f"The maximum product of two distinct numbers is: {solution.maxProduct(nums1)}") # Output: 42
Complexity
- ⏰ Time complexity:
O(n), wherenis the length of the input array because we traverse the array a constant number of times. - 🧺 Space complexity:
O(1), as we are using a constant amount of extra space regardless of the input size.