leetcode 1005. K 次取反后最大化的数组和


将数组按照绝对值的方法排序,从后往前,把绝对值大的负数变正即可。

java中自定义排序int[]比较麻烦,故我用的直接排序,用两个指针比较绝对值遍历。

class Solution {
    public int largestSumAfterKNegations(int[] nums, int k) {
        Arrays.sort(nums);
        int n=nums.length;
        int i=0,j=n-1;
        int sum=0;
        while(i0&&nums[i]<0){
                    sum-=nums[i++];
                    k--;
                }else{
                    sum+=nums[i++];
                }
            }
        }
        if(k%2==0) sum+=nums[i];
        else sum-=nums[i];
        return sum;
    }
}

相关