meibin08 / free-programming-books

📚码农周报 免费的编程书籍,leetcode(力扣)题解、前端算法题,牛客网前端大厂面试题题解、提升工作效率的常用工具等📈🎉
https://susouth.com/
424 stars 60 forks source link

Array-解题:三个数的最大乘积(NO.628) #33

Open meibin08 opened 5 years ago

meibin08 commented 5 years ago

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

meibin08 commented 5 years ago

js解题:

/**
 * @param {number[]} nums
 * @return {number}
 */
var maximumProduct = function(nums) {
    nums.sort((a,b)=>a-b);
    let len = nums.length;
    let res1 =   nums.slice(len-3).reduce((total,cur)=>{
      return total*cur
    },1);
    let res2 = nums[0]*nums[1]*nums[len-1];
    return res2 > res1 ? res2:res1;
    /*let val1 = Math.abs(nums[0]*nums[1]*nums[2]);
    let val2 = Math.abs(nums[len-1]*nums[len-2]*nums[len-3]);
    return val2 > val1 ? val2:val1;*/
};