我尝试的是在下面的代码中。我想编写一种更好的方法,以减少时间复杂度。 我看到的下面的代码复杂度是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);
}
}