- 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 };