Count the triplets Java
- Get link
- X
- Other Apps
PROGRAM TO COUNT TRIPLETS SUCH THAT ONE OF THE NUMBERS CAN BE WRITTEN AS SUM OF OTHER TWO
class
Main {
// Function to count the number of ways
// to choose the triples
static
int
countWays(
int
[] arr,
int
n)
{
// compute the max value in the array
// and create frequency array of size
// max_val + 1.
// We can also use HashMap to store
// frequencies. We have used an array
// to keep remaining code simple.
int
max_val =
0
;
for
(
int
i =
0
; i < n; i++)
max_val = Math.max(max_val, arr[i]);
int
[] freq =
new
int
[max_val +
1
];
for
(
int
i =
0
; i < n; i++)
freq[arr[i]]++;
int
ans =
0
;
// stores the number of ways
// Case 1: 0, 0, 0
ans += freq[
0
] * (freq[
0
] -
1
) * (freq[
0
] -
2
) /
6
;
// Case 2: 0, x, x
for
(
int
i =
1
; i <= max_val; i++)
ans += freq[
0
] * freq[i] * (freq[i] -
1
) /
2
;
// Case 3: x, x, 2*x
for
(
int
i =
1
;
2
* i <= max_val; i++)
ans += freq[i] * (freq[i] -
1
) /
2
* freq[
2
* i];
// Case 4: x, y, x + y
// iterate through all pairs (x, y)
for
(
int
i =
1
; i <= max_val; i++) {
for
(
int
j = i +
1
; i + j <= max_val; j++)
ans += freq[i] * freq[j] * freq[i + j];
}
return
ans;
}
// Driver code
public
static
void
main(String[] args)
{
int
[] arr =
new
int
[] {
1
,
2
,
3
,
4
,
5
};
int
n = arr.length;
System.out.println(countWays(arr, n));
}
}
OUTPUT
4
- Get link
- X
- Other Apps
Comments
Post a Comment