JavaAlgorithms/Others/ThreeSum.java

48 lines
1.1 KiB
Java
Raw Normal View History

package Others;
import java.util.Arrays;
2020-10-24 18:23:28 +08:00
import java.util.Scanner;
/**
* To find triplet equals to given sum in complexity O(n*log(n))
*
2020-10-24 18:23:28 +08:00
* <p>Array must be sorted
*
* @author Ujjawal Joshi
* @date 2020.05.18
2020-10-24 18:23:28 +08:00
* <p>Test Cases: Input: 6 //Length of array 12 3 4 1 6 9 target=24 Output:3 9 12 Explanation:
* There is a triplet (12, 3 and 9) present in the array whose sum is 24.
*/
2020-10-24 18:23:28 +08:00
class ThreeSum {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // Length of an array
int a[] = new int[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
System.out.println("Target");
int n_find = sc.nextInt();
Arrays.sort(a); // Sort the array if array is not sorted
for (int i = 0; i < n; i++) {
int l = i + 1, r = n - 1;
while (l < r) {
if (a[i] + a[l] + a[r] == n_find) {
System.out.println(a[i] + " " + a[l] + " " + a[r]);
break;
} // if you want all the triplets write l++;r--; insted of break;
else if (a[i] + a[l] + a[r] < n_find) l++;
else r--;
}
}
sc.close();
}
}