OD算法之最大最小N个数的和

q1871901600 发布于 2024-11-18 23 次阅读


/**
 * 给定一个数组,编写一个函数来计算它的最大N个数与最小N个数的和。你需要对数组进行去重。
说明:
       *数组中数字范围[0, 1000]
       *最大N个数与最小N个数不能有重叠,如有重叠,输入非法返回-1
*输入非法返回-1
 */

public class OD3 {
  
    public static int getSum(int[] arr,int n) {

        int sum = 0;
        int[] bits = new int[1001];
        int maxcount = n;
        int mincount = n;
//      从小到大排序
        Arrays.sort(arr);
        for (int i = 0; i < arr.length; i++) {
            if(bits[arr[i]] != 1&&maxcount>0){
                bits[arr[i]] = 1;
                sum +=  arr[i];
                maxcount--;
            }
            if(bits[arr[arr.length - 1 - i]] != 1&&mincount>0){
                bits[arr.length - 1 - i] = 1;
                sum += arr[arr.length - 1 - i];
                mincount--;
            }
        }
        return sum;
    }
    public static void main(String[] args) {
        OD3 od3 = new OD3();
        int sum = od3.getSum(new int[]{1, 1, 2, 3, 4, 5}, 2);
        System.out.println(sum);
    }

}
一个会写python的Java工程师
最后更新于 2024-11-18