两个数组的元素之和最大的前k项

简介: 题目描述:解决思路:时间复杂度很低,除了数组排序那块需要O(NlogN)(或者O(MlogM),看谁最大)之外,后面的顶多需要O(k^2),应该不是很大。

题目描述:


img_96581dd9d86620c247e1a027059c69ca.png

解决思路:

import java.util.*;

public class Main {
    //2,4,2,7,7-3,2,5,6,1,9:6
    //16 16 13 13 13 11

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        String[] tem = line.split("-");
        String[] array1 = tem[0].split(",");
        String[] temp = tem[1].split(":");
        String[] array2 = temp[0].split(",");
        int K = Integer.parseInt(temp[1]);
        Arrays.sort(array1, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        Arrays.sort(array2, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o2.compareTo(o1);
            }
        });
        int[] arr_1 = new int[array1.length];
        int[] arr_2 = new int[array2.length];
        for(int i = 0; i < array1.length; i++){
            arr_1[i] = Integer.parseInt(array1[i]);
        }
        for(int i = 0; i < array2.length; i++){
            arr_2[i] = Integer.parseInt(array2[i]);
        }
        ArrayList<Integer> sum = new ArrayList<>();
        int num_1 = K > arr_1.length ? arr_1.length : K;
        int num_2 = K > arr_2.length ? arr_2.length : K;
        for(int i = 0; i < num_1; i++){
            for(int j = 0; j < num_2; j++){
                sum.add(arr_1[i] + arr_2[j]);
            }
        }
        Collections.sort(sum, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        for(int i = 0; i < K; i++)
            System.out.println(sum.get(i));
    }
}


目录
相关文章
|
8月前
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
116 1
|
2月前
查找数组中最小的元素
【10月更文挑战第30天】查找数组中最小的元素。
42 5
|
2月前
查找数组中最大的元素值
【10月更文挑战第29天】查找数组中最大的元素值。
36 4
|
5月前
列表元素
【8月更文挑战第4天】列表元素。
49 8
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
|
7月前
|
索引
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
|
8月前
如何删除数组中的某个元素?
如何删除数组中的某个元素?
84 0
|
8月前
|
算法 索引 Python
如何实现二分查找算法? 要求:编写一个Python函数,输入一个有序列表和一个目标值,返回目标值在列表中的索引。如果目标值不在列表中,返回-1。
如何实现二分查找算法? 要求:编写一个Python函数,输入一个有序列表和一个目标值,返回目标值在列表中的索引。如果目标值不在列表中,返回-1。
80 0
曲线救国 —— 删除数组的指定元素
曲线救国 —— 删除数组的指定元素
40 0
|
存储
返回集合中最大,最小的元素,再将元素进行排序
返回集合中最大,最小的元素,再将元素进行排序
66 0