トピック:
長さが2nの整数配列numsが与えられた場合、タスクはこれらの数値をnペアに分割することです。たとえば、(a1、b1)、(a2、b2)、...、(an、bn) 1からnmin(ai、bi)の合計が最大です。
最大合計を返します。
例1:
入力:nums = [1,4,3,2]
出力:4
説明:すべての可能な分割(要素の順序を無視)は次のとおり
です:1。(1、4)、(2、3)-> min(1、4 )+ min(2、3)= 1 + 2 = 3
2.(1、3)、(2、4)-> min(1、3)+ min(2、4)= 1 + 2 =
33。 (1、2)、(3、4)-> min(1、2)+ min(3、4)= 1 + 3 = 4
なので、最大合計は4です。
例2:入力:nums = [6,2,6,5,1,2]
出力:9
説明:最適な除算方法は(2、1 )、(2、5 )、(6、6)です。min(2、1 )+ min(2、5)+ min(6、6)= 1 + 2 + 6 = 9
アイデア:
並べ替えてから、添え字を0、2、4 ...の数字として追加します。
コード:
/**
* @param {number[]} nums
* @return {number}
*/
var arrayPairSum = function (nums) {
nums.sort((a, b) => a - b);
let ans = 0;
for (let i = 0; i < nums.length; i += 2) {
ans += nums[i];
}
return ans;
};