小编mar*_*eIt的帖子

在特定条件下从给定整数中查找总和达到目标值的所有对的最有效方法

我正在寻找一种有效的方法来打印大量整数中的对,这些整数在某些条件下总和达到目标值:

  • 第一个 int 应该小于第二个 int 对
  • 打印应按该对中的第一个升序

我编写了一些意大利面条代码,它们在时间复杂度上似乎比两个循环更有效,但是,它不包括排序。我目前已经没有想法了。

我的问题如下:

  1. 对输出进行排序的最佳方法是什么?
  2. 除了我当前的解决方案之外,还有其他方法可以提高时间复杂度吗?

输出可能很大,所以我想知道是否应该替换System.out.println().

我必须打印出所有的配对。一个 int 可以有很多对。输入最多可以增长到数十万个整数。

给定目标 12:
示例输入:
2 10 0 8 4 12 8

输出示例:
0 12
2 10
4 8
4 8

public static void myFindPair(int[] arr, int target) {

    // Key = difference, value = index
    Map<Integer, Integer> map = new HashMap();

    for (int i = 0; i < arr.length; i++) {
        int difference = target - arr[i];
        map.put(difference, i);
        System.out.print(arr[i]);
    }

    for (int i …
Run Code Online (Sandbox Code Playgroud)

java arrays algorithm

2
推荐指数
1
解决办法
1293
查看次数

标签 统计

algorithm ×1

arrays ×1

java ×1