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. 三个数的最大乘积的主要内容,如果未能解决你的问题,请参考以下文章

628. 三个数的最大乘积

LeetCode:三个数的最大乘积628

LeetCode 628. 三个数的最大乘积

Leetcode 628.三个数的最大乘积

628. 三个数的最大乘积『简单』

leetcode关于数组的问题