LeetCode之628 三個數的最大乘積

2021-10-08 09:23:13 字數 908 閱讀 9765

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

示例 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位有符號整數的範圍。一...