三个数的最大乘积

题目

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入: [1,2,3]
输出: 6
示例 2:

输入: [1,2,3,4]
输出: 24

解题思路

1. 分为三种情况,全部正数,全部负数,有正数,有负数

2. 全部正数/负数取排序后三最大三位

3. 有正有负,最大乘积出现在两端

代码

```java

class Solution {

public int maximumProduct(int[] nums) {

    if(nums == null || nums.length < 3)

        return 0;

    Arrays.sort(nums);

    //全部正数

    if(nums[0] >= 0 ){

        return nums[nums.length-1] * nums[nums.length-2] *nums[nums.length-3];

    }

    //全部负数

    if(nums[nums.length-1] <= 0){

        return nums[nums.length-1] * nums[nums.length-2] *nums[nums.length-3];

    }

    //有正数有负数

    return   Math.max(nums[0]*nums[1]*nums[nums.length-1], nums[nums.length-1] * nums[nums.length-2] *nums[nums.length-3]);

}

}

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 2

从算法的角度来说 排序不合适吧 应该一次循环找出三个数据 直接乘

4年前 评论

@swing07 你写一下试试,怎么找到三个数,可以贴一下你的代码不

4年前 评论
swing07 4年前
swing07 4年前
zyfsuzy (作者) (楼主) 4年前
zyfsuzy (作者) (楼主) 4年前
zyfsuzy (作者) (楼主) 4年前
swing07 4年前
swing07 4年前
zyfsuzy (作者) (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!