本文主要是介绍leetcode-628. 三个数的最大乘积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入: [1,2,3]
输出: 6
示例 2:
输入: [1,2,3,4]
输出: 24
注意:
给定的整型数组长度范围是[3,10^4],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
解题思路
最大乘积,不是当前数组中最大的3个数的乘积,就是最大的数*最小的2个数的乘积,扫描即可
代码
class Solution:def maximumProduct(self, nums: List[int]) -> int:max_nums = nums[:3]min_nums = nums[:3]min_nums.remove(max(min_nums))for each_num in nums[3:]:if each_num > min(max_nums):max_nums.remove(min(max_nums))max_nums.append(each_num)if each_num < max(min_nums):min_nums.remove(max(min_nums))min_nums.append(each_num)ret_1, ret_2 = 1, max(max_nums)for each_max in max_nums:ret_1 *= each_maxfor each_min in min_nums:ret_2 *= each_minreturn max(ret_1, ret_2)
这篇关于leetcode-628. 三个数的最大乘积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!