Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2367.html
2367. Number of Arithmetic Triplets
 Difficulty: Easy.
 Related Topics: Array, Hash Table, Two Pointers, Enumeration.
 Similar Questions: Two Sum, 3Sum.
Problem
You are given a 0indexed, 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.**
Example 1:
Input: nums = [0,1,4,6,7,10], diff = 3
Output: 2
Explanation:
(1, 2, 4) is an arithmetic triplet because both 7  4 == 3 and 4  1 == 3.
(2, 4, 5) is an arithmetic triplet because both 10  7 == 3 and 7  4 == 3.
Example 2:
Input: nums = [4,5,6,7,8,9], diff = 2
Output: 2
Explanation:
(0, 2, 4) is an arithmetic triplet because both 8  6 == 2 and 6  4 == 2.
(1, 3, 5) is an arithmetic triplet because both 9  7 == 2 and 7  5 == 2.
Constraints:

3 <= nums.length <= 200

0 <= nums[i] <= 200

1 <= diff <= 50

nums
is strictly increasing.
Solution (Java, C++, Python)

class Solution { public int arithmeticTriplets(int[] nums, int diff) { Set<Integer> set = new HashSet<>(); for (int x : nums) { set.add(x); } int ans = 0; for (int x : nums) { if (set.contains(x  diff) && set.contains(x + diff)) { ans++; } } return ans; } } ############ class Solution { public int arithmeticTriplets(int[] nums, int diff) { boolean[] vis = new boolean[310]; for (int v : nums) { vis[v] = true; } int ans = 0; for (int v : nums) { if (vis[v + diff] && vis[v + diff + diff]) { ++ans; } } return ans; } }

class Solution: def arithmeticTriplets(self, nums: List[int], diff: int) > int: s = set(nums) return sum(v + diff in s and v + diff + diff in s for v in nums) ############ # 2367. Number of Arithmetic Triplets # https://leetcode.com/problems/numberofarithmetictriplets/ class Solution: def arithmeticTriplets(self, nums: List[int], diff: int) > int: n = len(nums) res = 0 for i in range(n): for j in range(i + 1, n): for k in range(j + 1, n): if nums[j]  nums[i] == diff and nums[k]  nums[j] == diff: res += 1 return res

class Solution { public: int arithmeticTriplets(vector<int>& nums, int diff) { vector<bool> vis(310); for (int v : nums) vis[v] = true; int ans = 0; for (int v : nums) ans += vis[v + diff] && vis[v + diff + diff]; return ans; } };

func arithmeticTriplets(nums []int, diff int) int { vis := make([]bool, 310) for _, v := range nums { vis[v] = true } ans := 0 for _, v := range nums { if vis[v+diff] && vis[v+diff+diff] { ans++ } } return ans }

function arithmeticTriplets(nums: number[], diff: number): number { let vis = new Array(310).fill(false); for (const v of nums) { vis[v] = true; } let ans = 0; for (const v of nums) { if (vis[v + diff] && vis[v + diff + diff]) { ++ans; } } return ans; }
Explain:
nope.
Complexity:
 Time complexity : O(n).
 Space complexity : O(n).