?歡迎訂閱《leetcode》專欄,每日一題,每天進步?
排序之后最大乘積就兩種情況:1、如果全是正數就是最后三個數相乘 2、如果有負數最大的乘機要么是最后三個數相乘,要么是兩個最小的負數相乘再乘以最大的正數
——leetcode此題熱評
前言
哈嘍,大家好,我是一條,
糊涂演算法,難得糊涂
《糊涂演算法》專欄上線倒計時——7天
Question
628. 三個數的最大乘積
難度:簡單
給你一個整型陣列 nums ,在陣列中找出由三個陣列成的最大乘積,并輸出這個乘積,
示例 1:
輸入:nums = [1,2,3] 輸出:6示例 2:
輸入:nums = [1,2,3,4] 輸出:24示例 3:
輸入:nums = [-1,-2,-3] 輸出:-6
Solution
- 注意可以有負數
- 注意兩個負數相乘為正數
三個數乘積最大有幾種情況?
- 三個最大正數的乘積,以及兩個最小負數與最大正數的乘積,二者之間的最大值即為所求答案,
- 如何找打最大正數和最小負數?
- 排序 or 線性掃描
Code
所有
leetcode代碼已同步至github歡迎
star
/**
* @author 一條coding
*/
class Solution {
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]);
}
}
Result
復雜度分析
- 時間復雜度:O(N)

🌈尋寶
?今天是堅持刷題更文的第47/100天
?各位的點贊、關注、收藏、評論、訂閱就是一條創作的最大動力
?更多演算法題歡迎關注專欄《leetcode》
為了回饋各位粉絲,禮尚往來,給大家準備了一些演算法教學視頻和電子書
需要的小伙伴可以點這里

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/297567.html
標籤:java
