每日一道Leetcode -628. 三个数的最大乘积【排序题】

每日一道Leetcode -628. 三个数的最大乘积【排序题】_第1张图片
一个最简单的解法(不考虑时间复杂度和空间复杂度的情况下):

class Solution {
     
    public int maximumProduct(int[] nums) {
     
        // 找 前K大的数 K = 3
        // 三个最大的正数
        // 两个最大的负数加一个最大的正数
        // 如果两个负数不如前两个最大的正数大,那还是最大的三个正数最大
        Arrays.sort(nums);
        int n = nums.length-1;
        return Math.max((nums[0]*nums[1]*nums[n]),(nums[n]*nums[n-1]*nums[n-2]));
    }
}

还有一种解法就是:

不用排序,直接求出数组中最大的三个数以及最小的两个数。

你可能感兴趣的:(Leetcode,leetcode)