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

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(i<j){
            int a1=Math.abs(nums[i]),a2=Math.abs(nums[j]);
            if(a1<a2){
                sum+=nums[j--];
            }else{
                if(k>0&&nums[i]<0){
                    sum-=nums[i++];
                    k--;
                }else{
                    sum+=nums[i++];
                }
            }
        }
        if(k%2==0) sum+=nums[i];
        else sum-=nums[i];
        return sum;
    }
}
上一篇:回文数c语言(来源:力扣(LeetCode))


下一篇:Django运行提示ModuleNotFoundError: No module named 'models'