zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    gan研究思路
    官方文档的学习
    构建Pytorch虚拟环境
    桌面显示【我的电脑】
    【VUE】计数器模块
    【品优购】字体图标定位的做法
    029垃圾分代回收机制
    03特殊for语句
    28包 package
    jdk特性
  • 原文地址:https://www.cnblogs.com/cznczai/p/11150440.html
Copyright © 2011-2022 走看看