每日一题 -- 简单 -- 三个数的最大乘积(628)

75 阅读1分钟

题目:给你一个整型数组 nums,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入:nums = [1,2,3]
输出:6

提示:

3 <= nums.length <= 104
-1000 <= nums[i] <= 1000

👧 感想: 看题目就知道是一道很简单的题,但是要注意考虑全面,就是有可能同时存在正负数的情况

👧 解题思路: 首先将数组进行排序,我选择使用冒泡排序。然后比较最大三个数的乘积 与 最小两个数与最大三个数的乘积哪个大。只会存在这两种情况

function maximumProduct(nums: number[]): number {
  popoSort(nums)
  let length: number = nums.length
  return Math.max(nums[0] * nums[1] * nums[length -1], nums[length - 3] * nums[length - 2] * nums[length -1])
};

function popoSort (nums: number[]) {
  for (let i = 0; i < nums.length; i++) {
    for (let j = 1; j < nums.length - i - 1; j++) {
      if (nums[j] > nums[j + 1]) {
        [nums[j], nums[j + 1]] = [nums[j + 1], nums[j]]
      }
    }
  }
}