力扣628 三個數的最大乘積

2021-10-21 20:18:03 字數 962 閱讀 4289

題目描述

給你乙個整型陣列 nums ,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。

示例
示例 1:

輸入:nums = [1,2,3]

輸出:6

示例 2:

輸入:nums = [1,2,3,4]

輸出:24

示例 3:

輸入:nums = [-1,-2,-3]

輸出:-6

3 <= nums.length <= 104

-1000 <= nums[i] <= 1000

解題思路
c語言直接寫乙個快排:找乙個基準值,這個值左邊的數都小於它,右邊的數都大於它,再對左右各半部分遞迴

快排參考

最終考慮到負負得正,試一試最小的兩個數跟最大數相乘是否更大,否則直接輸出最大三數之積

**
void

quicksort

(int

* nums,

int low,

int high)

if(i < j)

while

(i < j && nums[i]

< index)

if(i < j)

} nums[i]

= index;

// 將基準數填入最後的坑

quicksort

(nums, low, i -1)

;// 遞迴呼叫,分治

quicksort

(nums, i +

1, high)

;// 遞迴呼叫,分治

}int

maximumproduct

(int

* nums,

int numssize)

鏈結

力扣628 三個數的最大乘積

原題 陣列sort之後分類討論 如果nums 0 nums 1 0,則不管nums 2 nums n 1 為正為負都是和最後乙個元素之積最大 如果nums 0 nums 1 0,則必有nums 0 0,nums 1 0,此時不管元素個數 3還是 3,都取最後三個數之積為最大 1 class solu...

628 三個數的最大乘積

給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。cl...

628 三個數的最大乘積

給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6 示例 2 輸入 1,2,3,4 輸出 24 注意 給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。...