要求时间复杂度: ,空间复杂度: 。
数据范围:
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 最大乘积 * @param A int整型一维数组 * @return long长整型 */ function solve(A) { //三个数的最大乘积有两种可能 //1.三个最大的数相乘 //2.两个最小的数(负数)和一个最大的正数相乘 if (A.length < 3) return 0; // 初始化最大和最小值 let max1 = -Infinity, max2 = -Infinity, max3 = -Infinity; // 三个最大的数 let min1 = Infinity, min2 = Infinity; // 两个最小的数 for (let num of A) { // 更新最大值 if (num > max1) { max3 = max2; max2 = max1; max1 = num; } else if (num > max2) { max3 = max2; max2 = num; } else if (num > max3) { max3 = num; } // 更新最小值 if (num < min1) { min2 = min1; min1 = num; } else if (num < min2) { min2 = num; } } // 计算两种可能的最大乘积 const res1 = max1 * max2 * max3; // 三个最大值的乘积 const res2 = min1 * min2 * max1; // 两个最小值和一个最大值的乘积 // 返回较大的乘积 return Math.max(res1, res2); } module.exports = { solve: solve, };
/** * 最大乘积 * @param A int整型一维数组 * @return long长整型 */ function solve( A ) { // write code here A.sort((a,b)=>a-b); console.log(A); let len = A.length; //前两个+最后一个 let n = A[0]*A[1]*A[len-1]; //最后三个 let m=A[len-3]*A[len-2]*A[len-1]; return Math.max(n,m); } module.exports = { solve : solve };