628 三個數的最大乘積

2021-10-16 17:44:28 字數 1124 閱讀 4693

628. 三個數的最大乘積

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

示例 1:

輸入:[1,2,3]輸出:6
示例 2:

輸入:[1,2,3,4]輸出:24
注意:

給定的整型陣列長度範圍是[3,104],陣列中所有的元素範圍是[-1000, 1000]。

輸入的陣列中任意三個數的乘積不會超出32位有符號整數的範圍。

思路:我們先弱化一下條件,如果本題所有的數都保證非負,那麼很顯然我們只需要取出最大的三個數相乘便是答案。我們可以快排-o(nlogn),也可以用乙個大小為3的大根堆-o(nlog3),當然也有線性掃瞄的辦法。我們設定max1、max2、max3,表示第一大、第二大、第三大,那麼有max1>=max2>=max3。

若num > max1,則調整數值大小,max3 = max2;max2 = max1;max1 = num。

若num > max2,則調整數值大小,max3 = max2;max2 = num。

若num > max3,則調整數值大小,max3 = num。

class solution else if(nums[i] > max2)else if(nums[i] > max3)

}return max1 * max2 * max3;

}};

現在來看題目條件,題目給出的資料可能存在負數,當存在負數的時候,如:[-100,-98,-1,2,3,4],此時最大的應選取-100、-98、4,所以我們還需要知道最小的兩個數。

class solution else if(nums[i] < min2)

if(nums[i] > max1)else if(nums[i] > max2)else if(nums[i] > max3)

}return max(max1 * max2 * max3, max1 * min1 * min2);

}};

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

628 三個數的最大乘積

鏈結 給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。示例1輸入 1,2,3 輸出 6示例2 輸入 1,2,3,4 輸出 24注意 題解 由於陣列中的數可能有正數也可能有負數所以最大乘積會有以下幾種情況 1.如果陣列中的元素全是負數的話,那最大乘積就是三個最大負數相乘 2.如果...