สมมติว่าเรามีอาร์เรย์จำนวนเต็ม เราต้องหาตัวเลขสามตัวที่มีจำนวนผลิตภัณฑ์สูงสุดแล้วส่งคืนผลิตภัณฑ์สูงสุด
ดังนั้น หากอินพุตเป็น [1,1,2,3,3] ผลลัพธ์จะเป็น 18 เนื่องจากองค์ประกอบทั้งสามคือ [2,3,3]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
จัดเรียงตัวเลขอาร์เรย์
-
l :=ขนาดของ nums
-
a :=nums[l - 1], b :=nums[l - 2], c :=nums[l - 3], d :=nums[0], e :=nums[1]
-
คืนค่าสูงสุดของ a * b * c และ d * e * a
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; class Solution { public: int maximumProduct(vector<int>& nums) { sort(nums.begin(), nums.end()); int l = nums.size(); int a = nums[l - 1], b = nums[l - 2], c = nums[l - 3], d = nums[0], e = nums[1]; return max(a * b * c, d * e * a); } }; main(){ Solution ob; vector<int> v = {1,1,2,3,3}; cout << (ob.maximumProduct(v)); }
อินพุต
{1,1,2,3,3}
ผลลัพธ์
18