Skip to content

Commit 96bbe46

Browse files
solves maximum product of three numbers
1 parent e88b27a commit 96bbe46

File tree

3 files changed

+53
-1
lines changed

3 files changed

+53
-1
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
| 606 | [Construct String from Binary Tree](https://leetcode.com/problems/construct-string-from-binary-tree) | [![Java](assets/java.png)](src/ConstructStringFromBinaryTree.java) [![Python](assets/python.png)](python/construct_string_from_binary_tree.py) |
164164
| 617 | [Merge Two Binary Trees](https://leetcode.com/problems/merge-two-binary-trees) | [![Java](assets/java.png)](src/MergeTwoBinaryTrees.java) [![Python](assets/python.png)](python/merge_two_binary_trees.py) |
165165
| 624 | 🔒 [Maximum Distance in Arrays](https://leetcode.com/problems/maximum-distance-in-arrays) | |
166-
| 628 | [Maximum Product of Three Numbers](https://leetcode.com/problems/maximum-product-of-three-numbers) | |
166+
| 628 | [Maximum Product of Three Numbers](https://leetcode.com/problems/maximum-product-of-three-numbers) | [![Java](assets/java.png)](src/MaximumProductOfThreeNumbers.java) [![Python](assets/python.png)](python/maximum_product_of_three_numbers.py) |
167167
| 633 | [Sum Square Numbers](https://leetcode.com/problems/sum-of-square-numbers) | |
168168
| 637 | [Average of Levels in Binary Tree](https://leetcode.com/problems/average-of-levels-in-binary-tree) | |
169169
| 643 | [Maximum Average SubArray I](https://leetcode.com/problems/maximum-average-subarray-i) | |

Diff for: python/maximum_product_of_three_numbers.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def maximumProduct(self, array: List[int]) -> int:
6+
positive_1, positive_2, positive_3 = (-float('inf'), ) * 3
7+
negative_1, negative_2 = (float('inf'), ) * 2
8+
for number in array:
9+
if number > positive_1:
10+
positive_3 = positive_2
11+
positive_2 = positive_1
12+
positive_1 = number
13+
elif number > positive_2:
14+
positive_3 = positive_2
15+
positive_2 = number
16+
elif number > positive_3:
17+
positive_3 = number
18+
if number < negative_1:
19+
negative_2 = negative_1
20+
negative_1 = number
21+
elif number < negative_2:
22+
negative_2 = number
23+
24+
return max(positive_1 * positive_2 * positive_3, negative_1 * negative_2 * positive_1)

Diff for: src/MaximumProductOfThreeNumbers.java

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
public class MaximumProductOfThreeNumbers {
2+
public int maximumProduct(int[] numbers) {
3+
int positive1 = Integer.MIN_VALUE, positive2 = Integer.MIN_VALUE, positive3 = Integer.MIN_VALUE,
4+
negative1 = Integer.MAX_VALUE,
5+
negative2 = Integer.MAX_VALUE;
6+
7+
for (int number : numbers) {
8+
if (number > positive1) {
9+
positive3 = positive2;
10+
positive2 = positive1;
11+
positive1= number;
12+
} else if (number > positive2) {
13+
positive3 = positive2;
14+
positive2 = number;
15+
} else if (number> positive3) {
16+
positive3 = number;
17+
}
18+
if (number < negative2) {
19+
negative1 = negative2;
20+
negative2 = number;
21+
} else if (number < negative1) {
22+
negative1 = number;
23+
}
24+
}
25+
26+
return Math.max(positive1 * positive2 * positive3, negative1 * negative2 * positive1);
27+
}
28+
}

0 commit comments

Comments
 (0)