LeetCode #628 Maximum Product of Three Numbers 三個數(shù)的最大乘積

628 Maximum Product of Three Numbers 三個數(shù)的最大乘積

Description:
Given an integer array, find three numbers whose product is maximum and output the maximum product.

Example:

Example 1:

Input: [1,2,3]
Output: 6

Example 2:

Input: [1,2,3,4]
Output: 24

Note:

The length of the given array will be in range [3,10^4] and all elements are in the range [-1000, 1000].
Multiplication of any three numbers in the input won't exceed the range of 32-bit signed integer.

題目描述:
給定一個整型數(shù)組,在數(shù)組中找出由三個數(shù)組成的最大乘積园蝠,并輸出這個乘積型宝。

示例 :

示例 1:

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

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

注意:

給定的整型數(shù)組長度范圍是[3,10^4]住涉,數(shù)組中所有的元素范圍是[-1000, 1000]。
輸入的數(shù)組中任意三個數(shù)的乘積不會超出32位有符號整數(shù)的范圍碎捺。

思路:

有兩種情況需要考慮, 如果有 3個以上的正數(shù), 則最大乘積為3個最大的正數(shù)的乘積; 或者最大乘積是兩個絕對值最大的負數(shù)和最大的正數(shù)的乘積

  1. 遍歷列表, 參考LeetCode #414 Third Maximum Number 第三大的數(shù)
    時間復(fù)雜度O(n), 空間復(fù)雜度O(1)
  2. 對列表進行排序, 選擇最后三個數(shù)或者最后一個數(shù)和開頭兩個數(shù)的最大乘積即可
    時間復(fù)雜度O(nlgn), 空間復(fù)雜度O(1)

代碼:
C++:

class Solution 
{
public:
    int maximumProduct(vector<int>& nums) 
    {
        int max1 = -1000, max2 = -1000, max3 = -1000, min1 = 1000, min2 = 1000;
        for (auto num : nums) 
        {
            if (num > max1) 
            {
                max3 = max2;
                max2 = max1;
                max1 = num;
            } 
            else if (num > max2) 
            {
                max3 = max2;
                max2 = num;
            } 
            else if (num > max3) max3 = num;
            if (num < min1) 
            {
                min2 = min1;
                min1 = num;
            } 
            else if (num < min2) min2 = num;
        }
        return max(max1 * max2 * max3, min1 * min2 * max1); 
    }
};

Java:

class Solution {
    public int maximumProduct(int[] nums) {
        int max1 = -1000, max2 = -1000, max3 = -1000, min1 = 1000, min2 = 1000;
        for (int num : nums) {
            if (num > max1) {
                max3 = max2;
                max2 = max1;
                max1 = num;
            } else if (num > max2) {
                max3 = max2;
                max2 = num;
            } else if (num > max3) max3 = num;
            if (num < min1) {
                min2 = min1;
                min1 = num;
            } else if (num < min2) min2 = num;
        }
        return Math.max(max1 * max2 * max3, min1 * min2 * max1);
    }
}

Python:

class Solution:
    def maximumProduct(self, nums: List[int]) -> int:
        nums.sort()
        return max(nums[-1] * nums[-2] * nums[-3], nums[0] * nums[1] * nums[-1])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凤薛,更是在濱河造成了極大的恐慌,老刑警劉巖诞仓,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤苫,死亡現(xiàn)場離奇詭異,居然都是意外死亡墅拭,警方通過查閱死者的電腦和手機活玲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谍婉,“玉大人舒憾,你說我怎么就攤上這事∷氚荆” “怎么了镀迂?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長唤蔗。 經(jīng)常有香客問我探遵,道長,這世上最難降的妖魔是什么妓柜? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任箱季,我火速辦了婚禮,結(jié)果婚禮上领虹,老公的妹妹穿的比我還像新娘规哪。我一直安慰自己,他們只是感情好塌衰,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布诉稍。 她就那樣靜靜地躺著,像睡著了一般最疆。 火紅的嫁衣襯著肌膚如雪杯巨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天努酸,我揣著相機與錄音服爷,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛仍源,可吹牛的內(nèi)容都是我干的心褐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼笼踩,長吁一口氣:“原來是場噩夢啊……” “哼逗爹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚎于,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤掘而,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后于购,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袍睡,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年肋僧,在試婚紗的時候發(fā)現(xiàn)自己被綠了斑胜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡色瘩,死狀恐怖伪窖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情居兆,我是刑警寧澤覆山,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站泥栖,受9級特大地震影響簇宽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吧享,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一魏割、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钢颂,春花似錦钞它、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至操灿,卻和暖如春锯仪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趾盐。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工庶喜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留小腊,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓久窟,卻偏偏與公主長得像秩冈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瘸羡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容