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; } };
|