Javascript Program to Count triplets with sum smaller than a given value
Last Updated :
16 Sep, 2024
Given an array of distinct integers and a sum value. Find the count of triplets with a sum smaller than the given sum value. The expected Time Complexity is O(n2).
Examples:
Input : arr[] = {-2, 0, 1, 3}
sum = 2.
Output : 2
Explanation : Below are triplets with sum less than 2
(-2, 0, 1) and (-2, 0, 3)
Input : arr[] = {5, 1, 3, 4, 7}
sum = 12.
Output : 4
Explanation : Below are triplets with sum less than 12
(1, 3, 4), (1, 3, 5), (1, 3, 7) and
(1, 4, 5)
Native Approach:
A Native Solution is to run three loops to consider all triplets individually. For every triplet, compare the sums and increment count if the triplet sum is smaller than the given sum.
Example:
JavaScript
// A Simple Javascript program to count triplets with sum smaller
// than a given value
let arr = [5, 1, 3, 4, 7];
function countTriplets(n, sum) {
// Initialize result
let ans = 0;
// Fix the first element as A[i]
for (let i = 0; i < n - 2; i++) {
// Fix the second element as A[j]
for (let j = i + 1; j < n - 1; j++) {
// Now look for the third number
for (let k = j + 1; k < n; k++)
if (arr[i] + arr[j] + arr[k] < sum)
ans++;
}
}
return ans;
}
// Driver method to test the above function
let sum = 12;
console.log(countTriplets(arr.length, sum));
Complexity Analysis:
- Time Complexity: O(n3)
- Auxiliary Space: O(1)
Efficient Solution:
Efficient Solution can count triplets in O(n2) by sorting the array first, and then using method 1 of this post in a loop.
1) Sort the input array in increasing order.
2) Initialize result as 0.
3) Run a loop from i = 0 to n-2. An iteration of this loop finds all
triplets with arr[i] as first element.
a) Initialize other two elements as corner elements of subarray
arr[i+1..n-1], i.e., j = i+1 and k = n-1
b) Move j and k toward each other until they meet, i.e., while (j= sum
then k--
// Else for current i and j, there can (k-j) possible third elements
// that satisfy the constraint.
(ii) Else Do ans += (k - j) followed by j++
Below is the implementation of the above idea.
JavaScript
// A Simple Javascript program to count triplets with sum smaller
// than a given value
let arr = [5, 1, 3, 4, 7];
function countTriplets(n, sum) {
// Sort input array
arr.sort(function (a, b) { return b - a });
// Initialize result
let ans = 0;
// Every iteration of loop counts triplet with
// first element as arr[i].
for (let i = 0; i < n - 2; i++) {
// Initialize other two elements as corner elements
// of subarray arr[j+1..k]
let j = i + 1, k = n - 1;
// Use Meet in the Middle concept
while (j < k) {
// If sum of current triplet is more or equal,
// move right corner to look for smaller values
if (arr[i] + arr[j] + arr[k] >= sum)
k--;
// Else move left corner
else {
// This is important. For current i and j, there
// can be total k-j third elements.
ans += (k - j);
j++;
}
}
}
return ans;
}
// Driver method to test the above function
let sum = 12;
console.log(countTriplets(arr.length, sum));
Complexity Analysis:
- Time Complexity: O(n2)
- Auxiliary Space: O(1)
Please refer complete article on Count triplets with sum smaller than a given value for more details!
Similar Reads
Count triplets with sum smaller than a given value Given an array of distinct integers and a sum value. Find count of triplets with sum smaller than given sum value. The expected Time Complexity is O(n2).Examples: Input : arr[] = {-2, 0, 1, 3} sum = 2. Output : 2 Explanation : Below are triplets with sum less than 2 (-2, 0, 1) and (-2, 0, 3) Input :
11 min read
Javascript Program to Find a triplet that sum to a given value Given an array and a value, find if there is a triplet in array whose sum is equal to the given value. If there is such a triplet present in array, then print the triplet and return true. Else return false.Examples: Input: array = {12, 3, 4, 1, 6, 9}, sum = 24; Output: 12, 3, 9 Explanation: There is
6 min read
Javascript Program to Find all triplets with zero sum Given an array of distinct elements. The task is to find triplets in the array whose sum is zero.Examples : Input : arr[] = {0, -1, 2, -3, 1}Output : (0 -1 1), (2 -3 1)Explanation : The triplets with zero sum are0 + -1 + 1 = 0 and 2 + -3 + 1 = 0 Input : arr[] = {1, -2, 1, 0, 5}Output : 1 -2 1Explana
6 min read
Find all triplets that sum to a given value or less Given an array, arr[] and integer X. Find all the possible triplets from an arr[] whose sum is either equal to less than X. Example: Input : arr[] = {-1, 1, 3, 2}, X = 3Output: (-1, 1, 3), (-1, 1, 2)Explanation: If checked manually, the above two are the only triplets from possible 4 triplets whose
7 min read
Javascript Program to Find a triplet such that sum of two equals to third element Given an array of integers, you have to find three numbers such that the sum of two elements equals the third element.Examples:Input: {5, 32, 1, 7, 10, 50, 19, 21, 2}Output: 21, 2, 19Input: {5, 32, 1, 7, 10, 50, 19, 21, 0}Output: no such triplet existQuestion source: Arcesium Interview Experience |
3 min read