飞道的博客

LeetCode 628. 三个数的最大乘积

405人阅读  评论(0)

题目

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

示例 1:

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

示例 2:

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

注意:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

class Solution {
   
    public int maximumProduct(int[] nums) {
   
        if(nums.length == 3) {
   
            return nums[0] * nums[1] * nums[2];
        }
        int max1 = 0,max2 = 0,max3 = 0;
        int min1 = 0,min2 = 0;
        for (int n: nums) {
   
            if (n <= min1) {
   
                min2 = min1;
                min1 = n;
            } else if (n <= min2) {
        
                min2 = n;
            }
            if (n >= max1) {
              
                max3 = max2;
                max2 = max1;
                max1 = n;
            } else if (n >= max2) {
        
                max3 = max2;
                max2 = n;
            } else if (n >= max3) {
       
                max3 = n;
            }
        }
        return Math.max(min1 * min2 * max1, max1 * max2 * max3);
    }
}

12ms 40.5MB
只需要求得最小的两个数,以及最大的三个数,所以不需要用排序


更多题解点击此处


转载:https://blog.csdn.net/lolly1023/article/details/108702149
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场