題目描述
給你乙個整型陣列 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位有符號整數的範圍。...