[LeetCode] Count Special Triplets

3583. Count Special Triplets

You are given an integer array nums.

A special triplet is defined as a triplet of indices (i, j, k) such that:

  • 0 <= i < j < k < n, where n = nums.length
  • nums[i] == nums[j] * 2
  • nums[k] == nums[j] * 2

Return the total number of special triplets in the array.

Since the answer may be large, return it modulo 109 + 7.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
int specialTriplets(vector<int>& nums) {
unordered_map<int,long long> freq;
long long n = nums.size(), mod = 1e9 + 7, res = 0;
vector<long long> le(n);
for(int i = 0; i < nums.size(); i++) {
le[i] = freq[nums[i] * 2];
freq[nums[i]]++;
}
freq = {};
for(int i = n - 1; i >= 0; i--) {
res = (res + freq[nums[i] * 2] * le[i] % mod) % mod;
freq[nums[i]]++;
}
return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2025/06/15/PS/LeetCode/count-special-triplets/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.