三个数的最大乘积(java实现)
力扣 628. 三个数的最大乘积
题目说明
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
- 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
- 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
示例
例1
1 | 输入: [1,2,3] |
例2
1 | 输入: [1,2,3,4] |
笔者理解
此题是一道数组求解算法问题,在力扣题库中被定义为简单题。
解法
当笔者阅读完此题后,发现只要直接排序及考虑几种特殊情况即可,排序完之后,我们可以发现:
1、 数字全部为正数或者负数,取最大三个整数的乘积即可
2、 负数和正数都存在,且最小的两个负数的乘积较大,取最小两个负数的乘积再乘上最大正数
就让我们看看具体如何实现吧。
实现
1 | public int maximumProduct(int[] nums) { |
时间和空间效率都较高,可见此解法比较适合此题;
总结
本题是今天的每日一题,难度只有简单,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!










