forked from TheAlgorithms/JavaScript
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMaxProductOfThree.js
More file actions
Latest commit
38 lines (38 loc) · 1.1 KB
/
Copy pathMaxProductOfThree.js
File metadata and controls
38 lines (38 loc) · 1.1 KB
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
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* Given an array of numbers, return the maximum product
* of 3 numbers from the array
* https://wsvincent.com/javascript-three-sum-highest-product-of-three-numbers/
* @param {number[]} arrayItems
* @returns number
*/
exportfunctionmaxProductOfThree(arrayItems){
// if size is less than 3, no triplet exists
constn=arrayItems.length
if(n<3)thrownewError('Triplet cannot exist with the given array')
letmax1=arrayItems[0]
letmax2=null
letmax3=null
letmin1=arrayItems[0]
letmin2=null
for(leti=1;i<n;i++){
if(arrayItems[i]>max1){
max3=max2
max2=max1
max1=arrayItems[i]
}elseif(max2===null||arrayItems[i]>max2){
max3=max2
max2=arrayItems[i]
}elseif(max3===null||arrayItems[i]>max3){
max3=arrayItems[i]
}
if(arrayItems[i]<min1){
min2=min1
min1=arrayItems[i]
}elseif(min2===null||arrayItems[i]<min2){
min2=arrayItems[i]
}
}
constprod1=max1*max2*max3
constprod2=max1*min1*min2
returnMath.max(prod1,prod2)
}