NC106三个数的最大乘积(四种语言代码+视频讲解)
三个数的最大乘积
https://www.nowcoder.com/practice/8ae05c2913fe438b8b14f3968f64fc0b?tab=answerKey
- 1、题目描述:
- 2、题目链接:
-4、视频讲解链接B站视频讲解
-5、代码:
c++版本:
class Solution {
public:
/**
* 最大乘积
* @param A int整型一维数组
* @param ALen int A数组长度
* @return long长整型
*/
long long solve(int* A, int ALen) {
// write code here
// 最大的、第二大的和第三大的
int max1 = INT_MIN, max2 = INT_MIN, max3 = INT_MIN;
//最小的和第二小的(负数的时候要用)
int min1 = INT_MAX, min2 = INT_MAX;
for(int i = 0;i < ALen;i ++){
if(A[i] < min1){//更新最小值
min2 = min1;
min1 = A[i];
}else if(A[i] < min2){//更新第二小
min2 = A[i];
}
if (A[i] > max1){//更新最大值
max3 = max2;
max2 = max1;
max1 = A[i];
}else if(A[i] > max2){//更新第二大
max3 = max2;
max2 = A[i];
}else if(A[i] > max3){//更新第三大
max3 = A[i];
}
}
return max((long long)min1 * min2 * max1,(long long) max1 * max2 * max3);
}
};Java版本:
import java.util.*;
public class Solution {
/**
* 最大乘积
* @param A int整型一维数组
* @return long长整型
*/
public long solve (int[] A) {
// write code here
// 最大的第二大的和第三大的
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
//最小的和第二小的(负数的时候要用)
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
for(int i = 0;i < A.length;i ++){
if(A[i] < min1){//更新最小值
min2 = min1;
min1 = A[i];
}else if(A[i] < min2){//更新第二小
min2 = A[i];
}
if (A[i] > max1){//更新最大值
max3 = max2;
max2 = max1;
max1 = A[i];
}else if(A[i] > max2){//更新第二大
max3 = max2;
max2 = A[i];
}else if(A[i] > max3){//更新第三大
max3 = A[i];
}
}
return Math.max((long)min1 * min2 * max1,(long) max1 * max2 * max3);
}
}Python版本:
#
# 最大乘积
# @param A int整型一维数组
# @return long长整型
#
class Solution:
def solve(self , A ):
# write code here
#最大的第二大的和第三大的
max1 = max2 = max3 = float('-inf')
#最小的和第二小的(负数的时候要用)
min1 = min2 = float('inf')
for i in A:
if i < min1: #更新最小值
min2 = min1
min1 = i
elif i < min2:#更新第二小
min2 = i
if i > max1:#更新最大值
max3 = max2
max2 = max1
max1 = i
elif i > max2:#更新第二大
max3 = max2
max2 = i
elif i > max3:#更新第三大
max3 = i;
return max(min1 * min2 * max1,max1 * max2 * max3)
JavaScript版本:
//后台数据过大js没办法通过
/**
* 最大乘积
* @param A int整型一维数组
* @return long长整型
*/
function solve( A ) {
// write code here
// 最大的、第二大的和第三大的
let max1 = -2147483648, max2 = -2147483648, max3 = -2147483648;
//最小的和第二小的(负数的时候要用)
let min1 = 2147483647, min2 = 2147483647;
for(let i = 0;i < A.length;i ++){
if(A[i] < min1){//更新最小值
min2 = min1;
min1 = A[i];
}else if(A[i] < min2){//更新第二小
min2 = A[i];
}
if (A[i] > max1){//更新最大值
max3 = max2;
max2 = max1;
max1 = A[i];
}else if(A[i] > max2){//更新第二大
max3 = max2;
max2 = A[i];
}else if(A[i] > max3){//更新第三大
max3 = A[i];
}
}
return Math.max(min1 * min2 * max1,max1 * max2 * max3);
}
module.exports = {
solve : solve
};牛客题霸 文章被收录于专栏
本专栏主要是牛客题霸习题的讲解,有详细的考点分类,大家可以可以看看呦!!!

查看21道真题和解析