leetcode-028-三个数的最大乘积
刷题之旅从数组类型的题目开始。第二十八道题目是三个数的最大乘积,对应leetcode的题号为628。
题目描述
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
1 | 输入: [1,2,3] |
示例 2:
1 | 输入: [1,2,3,4] |
注意:
- 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
- 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
解题思路
这个题目要注意还有负数的存在。那么首先排序,然后结果也只有两种情况,第一种情况就是最后的三个数相乘,第二种情况就是前面两个数和最后一个数相乘。
- 考虑全是负数的情况:那么最大乘积就是最大的三个数之积
- 全是负数+一个零的情况:最大的乘积其实就是0,只要这个0参与计算就得到结果
- 考虑有负数有正数的情况:最大的乘积是最小的两个负数乘以最大的正数即可
- 考虑全是正数的情况:必然是最大的三个正数之积
综上考虑,其实就是比较两种计算结果就可以得到最大乘积了。
提交代码
1 | class Solution { |