1005. K 次取反后最大化的数组和(javascript)

//绝对值从大到小排序,判断其是否为负数,把前面的负数反转
 //如果没有负数,且k大于0,把绝对值小的正数反转
var largestSumAfterKNegations = function(nums, k) {
    nums.sort((a,b)=>{
        return Math.abs(b)-Math.abs(a)
    })
    //循环把负数反转
    for(let i=0;i0){
            nums[i]*=-1
            k--
        }
    }
    //把最小的绝对值反复反转
    let len=nums.length-1
    if(k>0&&k%2==1){
        nums[len]*=-1
    }
    k=0
    return nums.reduce((a,b)=>{
        return a+b
    })

};

你可能感兴趣的:(力扣算法题,leetcode,javascript,算法)