三个数的最大乘积

题目

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

示例 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 协议》,转载必须注明作者和本文链接
Image
讨论数量: 2

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

5年前 评论

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

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

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