代码之家  ›  专栏  ›  技术社区  ›  NoProg

在ArrayList中搜索键的和(Java)

  •  0
  • NoProg  · 技术社区  · 6 年前

    我需要搜索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;
    

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

    我想避免搜索比键更大的项目,而搜索其他项目,但是。。我不知道,我没有主意了!

    1 回复  |  直到 6 年前
        1
  •  0
  •   nits.kk    6 年前

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

    1. 初始化哈希集(<整数(>);集合,将包含数字的列表中的所有数字插入集合。

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

    3. 如果(Set.contains)(Sum KEY),则有两个数字的组合,使得Sum等于KEY。