Python編程題36--三個(gè)數(shù)的最大乘積

題目

給定一個(gè)整數(shù)列表 nums 涎拉,且 nums 中至少含有3個(gè)整數(shù),請(qǐng)?jiān)诹斜碇姓页鲇扇齻€(gè)數(shù)組成的最大乘積的圆,并輸出這個(gè)乘積鼓拧。

例如:

給定一個(gè)列表:[1, 2, 3],返回結(jié)果:6

給定一個(gè)列表:[1, 2, -3, -3, 0]越妈,返回結(jié)果:18

實(shí)現(xiàn)思路1

  • 使用 排序 的方式來(lái)實(shí)現(xiàn)季俩,但時(shí)間復(fù)雜度為 O(nlog(n))
  • 先對(duì) nums 進(jìn)行排序,排序后就可獲取到 nums 中最小的數(shù) min1梅掠、第二小的數(shù) min2酌住、最大的數(shù) max1、第二大的數(shù) max2阎抒、第三大的數(shù) max3
  • 最大乘積只會(huì)有2種組合情況:max1 * max2 * max3酪我、max1 * min1 * min2(因?yàn)?min1、min2均為負(fù)數(shù)時(shí)挠蛉,相乘可變?yōu)檎龜?shù))祭示,從而可以得到最大乘積。

代碼實(shí)現(xiàn)1

def maximumProduct(nums):
    nums.sort()
    return max(nums[0] * nums[1] * nums[-1], nums[-3] * nums[-2] * nums[-1])

實(shí)現(xiàn)思路2

  • 不使用排序谴古,直接遍歷一次列表即可质涛,時(shí)間復(fù)雜度O(n)
  • 定義 min1、min2 為一個(gè)無(wú)窮大的數(shù)掰担,所有數(shù)都比它們谢懵健;定義 max1带饱、max2毡代、max3 為一個(gè)無(wú)窮小的數(shù)阅羹,所有數(shù)都比它們大
  • 遍歷過(guò)程中,如果當(dāng)前整數(shù)小于 min1 教寂,那么將 min1 置為當(dāng)前整數(shù)捏鱼,同時(shí)需將 min2 置為原來(lái)的 min1 ;如果當(dāng)前整數(shù)大于等于 min1 且小于 min2 酪耕, 那么將 min2 置為當(dāng)前整數(shù)即可
  • 遍歷過(guò)程中导梆,如果當(dāng)前整數(shù)大于 max1,那么將 max1 置為當(dāng)前整數(shù)迂烁,同時(shí)需將 max2看尼、max3 置為原來(lái)的 min1、max2盟步;如果當(dāng)前整數(shù)小于等于 max1 且大于 max2藏斩,那么將 max2 置為當(dāng)前整數(shù),同時(shí)需將 max3 置為原來(lái)的 max2却盘;如果當(dāng)前整數(shù)小于等于 max2 且大于 max3狰域,那么將 max3 置為當(dāng)前整數(shù)即可

代碼實(shí)現(xiàn)2

def maximumProduct(nums):
    min1, min2 = float("inf"), float("inf")  # 定義一個(gè)無(wú)窮大的數(shù),所有數(shù)都比 inf 小
    max1, max2, max3 = float("-inf"), float("-inf"), float("-inf")  # 定義一個(gè)無(wú)窮小的數(shù)谷炸,所有數(shù)都比 -inf 大
    for num in nums:
        if num < min1:
            min1, min2 = num, min1
        elif num < min2:
            min2 = num
        if num > max1:
            max1, max2, max3 = num, max1, max2
        elif num > max2:
            max2, max3 = num, max2
        elif num > max3:
            max3 = num
    num_product1 = max1 * max2 * max3
    num_product2 = max1 * min1 * min2
    return num_product1 if num_product1 > num_product2 else num_product2

更多Python編程題北专,等你來(lái)挑戰(zhàn):Python編程題匯總(持續(xù)更新中……)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市旬陡,隨后出現(xiàn)的幾起案子拓颓,更是在濱河造成了極大的恐慌,老刑警劉巖描孟,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驶睦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡匿醒,警方通過(guò)查閱死者的電腦和手機(jī)场航,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)廉羔,“玉大人溉痢,你說(shuō)我怎么就攤上這事”锼” “怎么了孩饼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)竹挡。 經(jīng)常有香客問(wèn)我镀娶,道長(zhǎng),這世上最難降的妖魔是什么揪罕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任梯码,我火速辦了婚禮宝泵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轩娶。我一直安慰自己儿奶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布鳄抒。 她就那樣靜靜地躺著廓握,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘁酿。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天男应,我揣著相機(jī)與錄音闹司,去河邊找鬼。 笑死沐飘,一個(gè)胖子當(dāng)著我的面吹牛游桩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耐朴,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼借卧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了筛峭?” 一聲冷哼從身側(cè)響起铐刘,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎影晓,沒(méi)想到半個(gè)月后镰吵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挂签,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年疤祭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饵婆。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勺馆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侨核,到底是詐尸還是另有隱情草穆,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布芹关,位于F島的核電站续挟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侥衬。R本人自食惡果不足惜诗祸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一跑芳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧直颅,春花似錦博个、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至械荷,卻和暖如春共耍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吨瞎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工痹兜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颤诀。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓字旭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親崖叫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遗淳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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