給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。
示例 1:
輸入: [1,2,3]
輸出: 6
示例 2:
輸入: [1,2,3,4]
輸出: 24
注意:給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。
輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。
思路:這個題其實拿到感覺很簡單,這題題無非就是判斷3個數乘積的最大值,無非就是以下幾種情況:
1.全是正數,這個時候只用取最大的3個數即可
2.全是負數,因為是三個數,乘積肯定是負數,所以得選取3個最大的數
3.有負有正,還得分情況討論,比如乙個最大正數和兩個最小負數,或者兩個最小正數,乙個最大負數。
思路很簡單,**實現其實也不難,**如下:
int compare(const void* a, const void* b)
int max(int a, int b)
int maximumproduct(int* nums, int numssize)
這個**很簡單,說一下這個qsort, 包含在stdlib.h標頭檔案裡,函式一共四個引數,沒返回值.乙個典型的qsort的寫法如下:
qsort(s,n,sizeof(s[0]),cmp);
s代表參與排序的陣列名(或者也可以理解成開始排序的位址,因為可以寫&s[i]
這樣的表示式)n代表了參與排序的元素個數,sizeof(s[0])代表了單個元素的大小,最後乙個cmp就是我**中的compare函式,這個就相當於看他的返回值,如果compare的返回值為正數,那麼這個排序則是公升序排序,反之則為倒序排序。
LeetCode 三個數的最大乘積 628
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。仔細...
Leetcode 628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6 示例 2 輸入 1,2,3,4 輸出 24 注意 1.給定的整型陣列長度範圍是 3,104 陣列中所有的元素範圍是 1000,1000 2.輸入的陣列中任意三個數的乘積不會超出32位有符號整數...
Leetcode 628 三個數的最大乘積
給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例 1 輸入 1,2,3 輸出 6示例 2 輸入 1,2,3,4 輸出 24注意 給定的整型陣列長度範圍是 3,10 4 陣列中所有的元素範圍是 1000,1000 輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。一...