Skip to content

Commit 29786c9

Browse files
solves maximum product difference between two pairs
1 parent 32195d9 commit 29786c9

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@
460460
| 1897 | [Redistribute Characters to Make All Strings Equal](https://leetcode.com/problems/redistribute-characters-to-make-all-strings-equal) | [![Java](assets/java.png)](src/RedistributeCharactersToMakeAllStringsEqual.java) | |
461461
| 1903 | [Largest Odd Number in String](https://leetcode.com/problems/largest-odd-number-in-string) | [![Java](assets/java.png)](src/LargestOddNumberInString.java) | |
462462
| 1909 | [Remove One Element to Make the Array Strictly Increasing](https://leetcode.com/problems/remove-one-element-to-make-the-array-strictly-increasing) | [![Java](assets/java.png)](src/RemoveOneElementToMakeTheArrayStrictlyIncreasing.java) | |
463-
| 1913 | [Maximum Product Difference Between Two Pairs](https://leetcode.com/problems/maximum-product-difference-between-two-pairs) | | |
463+
| 1913 | [Maximum Product Difference Between Two Pairs](https://leetcode.com/problems/maximum-product-difference-between-two-pairs) | [![Java](assets/java.png)](src/MaximumProductDifferenceBetweenTwoPairs.java) | |
464464
| 1920 | [Build Array from Permutation](https://leetcode.com/problems/build-array-from-permutation) | | |
465465
| 1925 | [Count Square Sum Triples](https://leetcode.com/problems/count-square-sum-triples) | | |
466466
| 1929 | [Concatenation of Array](https://leetcode.com/problems/concatenation-of-array) | | |
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// https://leetcode.com/problems/maximum-product-difference-between-two-pairs
2+
// T: O(N)
3+
// S: O(1)
4+
5+
public class MaximumProductDifferenceBetweenTwoPairs {
6+
public int maxProductDifference(int[] nums) {
7+
Pair largest = getLargestAndSecondLargest(nums);
8+
Pair smallest = getSmallestAndSecondSmallest(nums);
9+
return largest.a * largest.b - smallest.a * smallest.b;
10+
}
11+
12+
private Pair getLargestAndSecondLargest(int[] array) {
13+
int largest = Integer.MIN_VALUE, secondLargest = Integer.MIN_VALUE;
14+
for (int element : array) {
15+
if (element > largest) {
16+
int temp = largest;
17+
largest = element;
18+
secondLargest = temp;
19+
} else if (element > secondLargest) {
20+
secondLargest= element;
21+
}
22+
}
23+
return new Pair(largest, secondLargest);
24+
}
25+
26+
private Pair getSmallestAndSecondSmallest(int[] array) {
27+
int smallest = Integer.MAX_VALUE, secondSmallest = Integer.MAX_VALUE;
28+
for (int element : array) {
29+
if (element < smallest) {
30+
int temp = smallest;
31+
smallest = element;
32+
secondSmallest = temp;
33+
} else if (element < secondSmallest) {
34+
secondSmallest = element;
35+
}
36+
}
37+
return new Pair(smallest, secondSmallest);
38+
}
39+
40+
private static final class Pair {
41+
private final int a;
42+
private final int b;
43+
44+
private Pair(int a, int b) {
45+
this.a = a;
46+
this.b = b;
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)