两个数组的元素之和最大的前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));
    }
}


目录
相关文章
|
6月前
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
109 1
|
14天前
查找数组中最小的元素
【10月更文挑战第30天】查找数组中最小的元素。
29 5
|
15天前
查找数组中最大的元素值
【10月更文挑战第29天】查找数组中最大的元素值。
27 4
|
3月前
列表元素
【8月更文挑战第4天】列表元素。
39 8
|
6月前
|
XML 数据格式
获取元素的值
```markdown 代码示例获取XML文档中首个`&lt;title&gt;`元素的文本值:`txt = xmlDoc.getElementsByTagName(&quot;title&quot;)[0].childNodes[0].nodeValue;`在`books.xml`中加载数据后,结果为`txt = &quot;Everyday Italian&quot;`。 ```
|
5月前
|
索引
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
|
6月前
在排序数组中查找元素的第一个和最后一个位置
在排序数组中查找元素的第一个和最后一个位置
|
6月前
如何删除数组中的某个元素?
如何删除数组中的某个元素?
77 0
曲线救国 —— 删除数组的指定元素
曲线救国 —— 删除数组的指定元素
37 0
|
存储
返回集合中最大,最小的元素,再将元素进行排序
返回集合中最大,最小的元素,再将元素进行排序
59 0