Back to all solutions

#2367 - Number of Arithmetic Triplets

Problem Description

You are given a 0-indexed, strictly increasing integer array nums and a positive integer diff.

A triplet (i, j, k) is an arithmetic triplet if the following conditions are met:

  • i < j < k,
  • nums[j] - nums[i] == diff, and
  • nums[k] - nums[j] == diff.

Return the number of unique arithmetic triplets.

Solution

/**
 * @param {number[]} nums
 * @param {number} diff
 * @return {number}
 */
var arithmeticTriplets = function(nums, diff) {
  let result = 0;

  for (let j = 1; j < nums.length - 1; j++) {
    let i = j - 1;
    let k = j + 1;

    while (i >= 0 && nums[j] - nums[i] <= diff) {
      if (nums[j] - nums[i] === diff) {
        while (k < nums.length && nums[k] - nums[j] <= diff) {
          if (nums[k] - nums[j] === diff) {
            result++;
          }
          k++;
        }
      }
      i--;
    }
  }

  return result;
};