Leetcode 1005. K 次取反后最大化的数组和(贪心) 记录反思

阅读 29

2022-02-26

在这里插入图片描述

  public int largestSumAfterKNegations(int[] nums, int k) {
        IntStream stream = Arrays.stream(nums);
        Stream<Integer> integerStream = stream.boxed();
        Integer[] integers = integerStream.toArray(Integer[]::new);
        Arrays.sort(integers,(a,b)->(Math.abs(b)-Math.abs(a)));
        for(int i = 0; i< integers.length;i++){
            if(integers[i]<0 && k>0 ){
                integers[i] *= -1;
                k--; 
            }
        }
    
        if(k%2 == 1){
            integers[integers.length-1] *= -1;
        }
        
        int count = 0;
        for(int i = 0;i<=integers.length -1;i++){
            count += integers[i];
        }
        return count;
    }

图一乐,学习了一下Arrays.sort的比较器, 比较器用了泛型所以只能把int数组转成Integer数组.其他的没什么

学无止境呀

就这样吧

精彩评论(0)

0 0 举报