zoukankan      html  css  js  c++  java
  • leetcode 628 三个数的最大乘积

    package com.example.lettcode.dailyexercises;
    
    import java.util.Arrays;
    
    /**
     * @Class MaximumProduct
     * @Description 628 三个数的最大乘积
     * 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
     * <p>
     * 示例 1:
     * 输入: [1,2,3]
     * 输出: 6
     * <p>
     * 示例 2:
     * 输入: [1,2,3,4]
     * 输出: 24
     * <p>
     * 注意:
     * 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
     * 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
     * @Author
     * @Date 2021/1/20
     **/
    public class MaximumProduct {
        /**
         * 首先将数组排序。
         * 如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;
         * 如果全是非正数,则最大的三个数相乘同样也为最大乘积。
         * 如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。
         *
         * 综上,我们在给数组排序后,
         * 分别求出三个最大正数的乘积,以及两个最小负数与最大正数的乘积,二者之间的最大值即为所求答案
         * @param nums
         * @return
         */
        public static int maximumProduct(int[] nums) {
            if (nums == null || nums.length < 3) return 0;
            if (nums.length == 3) return nums[0] * nums[1] * nums[2];
            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]);
        }
    }
    
    // 测试用例
    public static void main(String[] args) {
    	int[] nums = new int[]{1, 2, 3};
    	int ans = maximumProduct(nums);
    	System.out.println("MaximumProduct demo01 result:" + ans);
    
    	nums = new int[]{1, 2, 3, 4};
    	ans = maximumProduct(nums);
    	System.out.println("MaximumProduct demo02 result:" + ans);
    
    	nums = new int[]{-4, -1, 2, 3};
    	ans = maximumProduct(nums);
    	System.out.println("MaximumProduct demo03 result:" + ans);
    
    	nums = new int[]{-4, 1, 2, 3, 6};
    	ans = maximumProduct(nums);
    	System.out.println("MaximumProduct demo04 result:" + ans);
    
    }
    
  • 相关阅读:
    super的使用
    Django--自定义 Command 命令
    Django models
    二柱子的编程 四则运算2
    阅读《梦断代码》计划
    随机数计算小学四则运算
    人月神话有感
    软件演化
    软件测试
    软件实现
  • 原文地址:https://www.cnblogs.com/fyusac/p/14301816.html
Copyright © 2011-2022 走看看