(Js)leetcode561。配列分割I

トピック:

長さが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;
};

演算結果:

おすすめ

転載: blog.csdn.net/M_Eve/article/details/113820861