首页 > 解决方案 > 在 ArrayList (Java) 中搜索 Key 的总和

问题描述

我需要搜索在我的 ArrayList 中是否存在与传递给方法的给定数字 X 相对应的两个数字的总和。

我在两个不同的文件中有这些数字——一个包含数字,另一个包含键。

我要做的是:

- 用这些数字填充 2 个不同的 ArrayList

- 用我必须搜索总和的数字排序一个,所以它是有序的

然后我不知道如何检查给定的键是否是数组列表中包含的两个数字的总和。有什么建议吗?我发布了我的部分代码,只是最后一次尝试。

在这里,我对 ArrayList 进行排序并在其上调用方法 elementIsContained,并传递“sums.get(i)”,这是我必须在另一个 ArrayList 中搜索的数字。

 case "-a":
            buffer.mergeSort(arrList, 0, arrList.size()-1);
            for(int i=0; i < sums.size(); i++){
            elementIsContained(arrList, 0, arrList.size()-1, sums.get(i) );
            }
            break;

然后我试图以二分法的方式搜索总和,但我不知道如何对所有组合求和以找到关键

我正在考虑避免搜索大于键的项目并搜索其他项目,但是..我不知道,我没有想法!

标签: javacsortingarraylistbinary-search

解决方案


让我们看看操作流程(一种可能的解决方案)

  1. 初始化一个HashSet<Integer>SET,将包含Numbers的列表中的所有数字插入到SET中。

  2. 开始一个循环并迭代包含键的列表。因此,对于每次迭代,您都有一个 KEY。

  3. if(Set.contains(Sum-KEY) 那么你有 2 个数字的组合,使得总和等于 KEY。

推荐阅读