【leetcode】561. 數組拆分 I

給定長度爲 2n 的數組, 你的任務是將這些數分紅 n 對, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得從1 到 n 的 min(ai, bi) 總和最大。

示例 1:
輸入: [1,4,3,2]
輸出: 4
解釋: n 等於 2, 最大總和爲 4 = min(1, 2) + min(3, 4).

提示:數組

n 是正整數,範圍在 [1, 10000].
數組中的元素範圍在 [-10000, 10000].
思路

1.數組排序
2.獲取分組的數量
3. 循環數組,並將內容填充到切片的數組中進行大小比較;
4.將小值相加spa

解題代碼:
var arrayPairSum = function(nums) {
    /* 數組排序 */
    nums.sort((a, b) => a - b);
    /* 獲取分組的數量 */
    let len = Math.ceil(nums.length / 2);
    let temp = 0;
    /* 循環數組,並將內容填充到切片的數組中進行大小比較 */
    Array.from({
        length: len
    }, (v, w) => {
        temp += Math.min(...nums.slice(w * 2, w * 2 + 2));
    })
    return temp
};

圖片.png

相關文章
相關標籤/搜索