Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr có độ dài 2n làm đối số duy nhất. Nhiệm vụ của hàm là gom các số nguyên này thành n cặp số nguyên, ví dụ (a1, b1), (a2, b2), ..., (an, bn) sao cho tổng của min(ai, bi) với mọi i từ 1 đến n là lớn nhất có thể.
Ví dụ, nếu đầu vào là:
const arr = [1, 4, 3, 2];
Thì đầu ra sẽ là:
const output = 4;
Giải thích kết quả
n = 2, và tổng cặp tối đa là 4 = min(1, 2) + min(3, 4).
Ví dụ
Dưới đây là mã thực hiện:
const arr = [1, 4, 3, 2];
const pairSum = (arr = []) => {
arr.sort((a, b) => a - b);
let sum = 0;
for (let i = 0; i < arr.length; i += 2) {
sum += Math.min(arr[i], arr[i + 1]);
}
return sum;
};
console.log(pairSum(arr));
Kết quả
Đầu ra trên console:
4