1. 程式人生 > 其它 >LeetCode 每日一題628. 三個數的最大乘積

LeetCode 每日一題628. 三個數的最大乘積

技術標籤:每日一題leetcode演算法java

628. 三個數的最大乘積

給定一個整型陣列,在陣列中找出由三個陣列成的最大乘積,並輸出這個乘積。

示例 1:

輸入: [1,2,3]
輸出: 6

示例 2:

輸入: [1,2,3,4]
輸出: 24

注意:

  • 給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。
  • 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。

方法一:排序

解題思路

不難發現答案只能在兩個數中產生

  1. 最小的兩個數和最大的數相乘
  2. 最大的三個數相乘

排序後找出對應上的數相乘就 OK 了~

參考程式碼

public int maximumProduct
(int[] nums) { Arrays.sort(nums); int n = nums.length; return Math.max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1]); }

執行結果
在這裡插入圖片描述

PS:也可以通過一次遍歷找出這 五個數,筆墨水快用完了,就不寫了~