LeetCode 628. Maximum Product of Three Numbers

628. Maximum Product of Three Numbers(三个数的最大乘积)

链接

https://leetcode-cn.com/problems/maximum-product-of-three-numbers/submissions

题目

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

示例 1:

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

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

给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

思路

简单题,分析一下思路,要求乘积的最大值,那么限定一下范围,只能是三个最大正数相乘,或者两个最小负数相乘再乘最大正数,负负得正。这里采用sort直接排序,偷了个懒,之后算出两种最大值比较输出即可。

代码

  public static int maximumProduct(int[] nums) {
    Arrays.sort(nums);
    int max1 = nums[0] * nums[1] * nums[nums.length - 1];
    int max2 = nums[nums.length - 3] * nums[nums.length - 2] * nums[nums.length - 1];

    return Math.max(max1, max2);
  }
  
posted @ 2019-12-28 18:10  cheng102e  阅读(125)  评论(0编辑  收藏  举报