[路飞] 数组拆分I

131 阅读1分钟

记录 1 道算法题

数组拆分

leetcode-cn.com/problems/ar…


要求:将数组分成 n 对,用每一对的最小的一个数相加,求最大值,数组一定是双数长度。

比如:[1,4,3,2], 输出 4。

规律比较简单,只要让每一对都有最大的数作为最小的数就可以。我们会发现只要让每一对最小的数都大于数组中比他小的数就会符合,正好的在偶数位上的数,所以只要排序然后取偶数位上的数就可以了。

    function arrayPairSum(nums) {
        nums.sort((a,b) => a - b)
        let result = 0
        for (let i = 0; i < nums.length; i += 2) {
            result += nums[i]
        }
        
        return result
    }