628. 三个数的最大乘积
Posted hequnwang10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了628. 三个数的最大乘积相关的知识,希望对你有一定的参考价值。
一、题目描述
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入:nums = [1,2,3]
输出:6
示例 2:
输入:nums = [1,2,3,4]
输出:24
示例 3:
输入:nums = [-1,-2,-3]
输出:-6
二、解题
线性扫描
求出数组中最大的三个数以及最小的两个数,因此我们可以不用排序,用线性扫描直接得出这五个数。
class Solution
public int maximumProduct(int[] nums)
//这个需要判断负数的情况
//若排序后前两个数都是负数 则相乘为正数
// 最小的和第二小的
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
// 最大的、第二大的和第三大的
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
for (int x : nums)
if (x < min1)
min2 = min1;
min1 = x;
else if (x < min2)
min2 = x;
if (x > max1)
max3 = max2;
max2 = max1;
max1 = x;
else if (x > max2)
max3 = max2;
max2 = x;
else if (x > max3)
max3 = x;
return Math.max(min1 * min2 * max1, max1 * max2 * max3);
以上是关于628. 三个数的最大乘积的主要内容,如果未能解决你的问题,请参考以下文章