给定n个元素的数组,如果3个元素之和中的3个等于常数c,则返回true

时间:2018-07-28 08:54:25

标签: algorithm sorting data-structures

我尝试的是在下面的代码中。我想编写一种更好的方法,以减少时间复杂度。 我看到的下面的代码复杂度是o(n ^ 3)。 我正在寻找与目标总和完全相等的总和。我知道存在一个与question类似的问题,但是我正在寻找更好的方法。 请建议使用数据结构的更好方法

public class SumofThreeNumbers {
private String findTriplet(int[] inputArray, int targetSum) {

    for (int i = 0; i < inputArray.length; i++) {
        for (int j = i + 1; j < inputArray.length; j++) {
            for (int k = j + 1; k < inputArray.length; k++) {
                if (inputArray[i] + inputArray[j] + inputArray[k] == targetSum) {
                    return "FIRST VALUE IS===" + inputArray[i] + "\nSECOND VALUE IS===" + inputArray[j]
                            + "\nTHIRD VALUE IS===" + inputArray[k];
                }
            }

        }
    }
    return "Not FOUND";
}

public static void main(String[] args) {
    SumofThreeNumbers sumOfThreeObj = new SumofThreeNumbers();
    int[] inputArray = { 1, 2, 3, 4, 5, 6, 7, 8 };
    String result = sumOfThreeObj.findTriplet(inputArray, 20);
    System.out.println(result);
}

}

1 个答案:

答案 0 :(得分:0)

您可以找到X解决方案here

O(n^2)