java - 查找任意两个列表值之和是否等于给定值

标签 java for-loop arraylist

当我被要求编写一个方法来检查数组列表中的任何对是否等于给定值时,我想出了这个:

import java.util.ArrayList;

public class FindWhetherTwoInArrEqual {

    public static void main(String[] args) {
        ArrayList<Integer> arr = new ArrayList<Integer>();
        arr.add(10);        arr.add(12);
        arr.add(18);        arr.add(10);
        arr.add(8);         arr.add(12);
        arr.add(33);        arr.add(28);
        arr.add(2);         arr.add(20);
        findWhetherTwoInArraySumToValue(arr, 30);
    }
    public static boolean findWhetherTwoInArraySumToValue(ArrayList<Integer> array, int value)
    {
        for(int i = 0; i < array.size(); ++i)
            for(int j=i+1; j < array.size(); ++j)
                if(array.get(i) + array.get(j) == value)               
                    System.out.println(array.get(i) +" + "+ array.get(j) + " = " + value); 
        return false;
    }    
}

结果:

10 + 20 = 30
12 + 18 = 30
18 + 12 = 30
10 + 20 = 30
28 + 2 = 30

时间复杂度为O(n)。

有更有效的方法吗?

最佳答案

你能试试这个代码吗:

 for(int i =0;i< array.size(); ++i){
        if(array.contains(value - array.get(i)))
        {
            System.out.println((value - array.get(i)) +" + "+ array.get(i) + " = " + value);
        }
    }   

关于java - 查找任意两个列表值之和是否等于给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21078383/

相关文章:

Java EE JDBC 领域

Java-For循环

python - 在Python中创建一个按字符分隔的列表

java - 通过 spring 显示多表 jasper 报告

java - 如何通过接受类名动态创建列表

Java正则表达式捕获重复组

java - 在面向 Oreo 的 Android 应用程序上使用 Android Broadcast

java - 如何在没有 ConnectionRefused 异常的情况下以本地(独立)模式运行 Hadoop?

c++ - C++ 循环内定义的局部变量

java - 如何创建包含 2d Arraylist 的 2d 数组? (JAVA)