java 算法之 三个数的最大乘积

221 阅读1分钟

题目

现有一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积

解题思路

1.先对数组排序,如果最大的三个数均为非负数,则为最大的三个数相乘;

2.如果最大的三个数均为负数,则也为最大的三个负数相乘;

3.如果有正数负数,则为两个负数与最大的正数相乘的积,与最大的三个数相乘的积中的最大者

代码

public int maximumProduct(int[] nums) {
        Arrays.sort(nums);
        int n = nums.length;
        return Math.max(nums[0]*nums[1]*nums[n-1],nums[n-3]*nums[n-2]*nums[n-1]);
    }

代码分析

先用数组自带的排序方法Arrays.sort(nums)对整数数组进行排序。定义一个变量n用来记录数组的长度。通过Math.max()方法比较两个表达式的值,分别是nums[0]*nums[1]*nums[n-1]和nums[n-3]*nums[n-2]*nums[n-1]。这两个表达式代表数组中最小的两个数与最大的数的乘积,数组中最大的三个数的乘积。Math.max()方法得到的就是最大值。