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

Posted cznczai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1005.K 次取反后最大化的数组和相关的知识,希望对你有一定的参考价值。

技术图片
这道题我的做法是进行排序 从小到大 取以一个数取反 再进行排序取反 每一次取的数都是最小的 如-10 变 10 排序 取第一个数

class Solution 
    public int largestSumAfterKNegations(int[] A, int K) 
         Arrays.sort(A);
         int sum = 0;
         for(int i = 0;i < K ;i++) 
             A[0] = -A[0];
             Arrays.sort(A);
         
         for(int i = 0 ; i < A.length ;i++ ) 
             sum += A[i];
         
         return sum;  
        

这是一种很简单的解法
另外一种是优先队列 有限队列入队列后 也会进行一个从小到大排序 跟上面差不多

class Solution 
    public int largestSumAfterKNegations(int[] A, int K) 
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        for (int num: A) 
            pq.offer(num);
        
        for (int i = 0; i < K; i++) 
            pq.offer(-pq.poll());
        
        int sum = 0;
        while (!pq.isEmpty()) 
            sum += pq.poll();
        
        return sum;
    

以上是关于1005.K 次取反后最大化的数组和的主要内容,如果未能解决你的问题,请参考以下文章

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

leetcode每日一题:1005. K 次取反后最大化的数组和

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

Leetcode刷题100天—1005. K 次取反后最大化的数组和( 数组)—day78

Leetcode刷题100天—1005. K 次取反后最大化的数组和( 数组)—day78

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