Cho hai mảng số dương cùng độ dài. Tìm tổng tích lớn nhất khi mỗi phần tử mảng 1 nhân với đúng một phần tử mảng 2 (mỗi phần tử dùng đúng một lần).
Giải pháp: sắp xếp cả hai mảng giảm dần, nhân từng cặp tương ứng.
Ví dụ
Mã thực hiện:
const arr1 = [5,1,3,4,2];
const arr2 = [8,10,9,7,6];
const sorter = (a, b) => b - a;
const greatestProduct = (a1, a2) => {
if(a1.length !== a2.length){
return false;
};
const a1Sorted = a1.slice().sort(sorter);
const a2Sorted = a2.slice().sort(sorter);
let res = 0;
for(let i = 0; i < a1.length; i++){
res += (a1Sorted[i] * a2Sorted[i]);
};
return res;
};
console.log(greatestProduct(arr1, arr2));
Kết quả
Kết quả in ra console:
130