Back to all solutions

#1995 - Count Special Quadruplets

Problem Description

Given a 0-indexed integer array nums, return the number of distinct quadruplets (a, b, c, d) such that:

  • nums[a] + nums[b] + nums[c] == nums[d], and
  • a < b < c < d

Solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var countQuadruplets = function(nums) {
  const map = new Map();
  let result = 0;

  for (let c = nums.length - 2; c >= 2; c--) {
    map.set(nums[c + 1], (map.get(nums[c + 1]) || 0) + 1);
    for (let a = 0; a < c - 1; a++) {
      for (let b = a + 1; b < c; b++) {
        const sum = nums[a] + nums[b] + nums[c];
        result += map.get(sum) || 0;
      }
    }
  }

  return result;
};