Max Product Finder
code-challenge-max-product-finder-javascript
I can’t find out why the last test doesn’t pass. I think I have tested all possible cases and get the correct results. Does anyone have an idea?
function maxProductFinderK(numbers, size) {
// Write your code here
if(size===0) return 0;
numbers.sort((a,b) => b-a);
if(size===1) return numbers[0];
let product = 1;
const getProduct = arr => arr.reduce((acc,el) => acc * el, 1);
/**
* Returns an array with max 2 items with largest product size
* @param {number} len - max length of the returned array
*/
function getMax(len) {
const start = numbers.slice(0, len);
const end = numbers.slice(numbers.length-len);
if(getProduct(start) < 0 && getProduct(end) < 0) return [];
return getProduct(start) > getProduct(end) ? numbers.splice(0, len) : numbers.splice(numbers.length-len, len);
}
while(size > 0) {
let len = Math.min(2, Math.max(0, size));
product *= getProduct(getMax(len));
size-=len;
}
return product;
}
console.log(maxProductFinderK([-8, 6, -7, 3, 2, 1, -9], 7)) // returns 2592
console.log(maxProductFinderK([-8, 6, -7, 3, 2, 1, -9], 3)) // returns 432
console.log(maxProductFinderK([-8, 6, -7, 3, 2, 1, -9], 2)) // returns 72
console.log(maxProductFinderK([-3,-2,-4], 3)) // returns 12
console.log(maxProductFinderK([-3,-2,-4], 1)) // returns -2
console.log(maxProductFinderK([-3,-2,-4], 0)) // returns 0