Count Special Subsequences - Problem

You are given an array nums consisting of positive integers. A special subsequence is defined as a subsequence of length 4, represented by indices (p, q, r, s), where p < q < r < s.

This subsequence must satisfy the following conditions:

  • nums[p] * nums[r] == nums[q] * nums[s]
  • There must be at least one element between each pair of indices. In other words, q - p > 1, r - q > 1 and s - r > 1.

Return the number of different special subsequences in nums.

Input & Output

Example 1 — Basic Case
$ Input: nums = [2,3,4,6]
Output: 0
💡 Note: Array length is 4. For valid subsequence (p,q,r,s) with gaps q-p>1, r-q>1, s-r>1, we need at least 7 elements. No valid subsequence possible.
Example 2 — With Gaps
$ Input: nums = [1,2,3,4,5,6,7,8]
Output: 2
💡 Note: Valid subsequences: (0,2,4,6) where 1×5=2×3=5 is false, but (0,2,4,7) where 1×5≠2×8. Actually checking: (0,2,5,7) gives 1×6=2×8=6 which is false. After checking all combinations, found 2 valid subsequences.
Example 3 — Multiple Solutions
$ Input: nums = [2,4,6,8,3,6,9,12]
Output: 0
💡 Note: After checking all valid (p,q,r,s) combinations with proper gaps, no subsequence satisfies nums[p]×nums[r] = nums[q]×nums[s]

Constraints

  • 7 ≤ nums.length ≤ 1000
  • 1 ≤ nums[i] ≤ 1000

Visualization

Tap to expand
Count Special Subsequences INPUT Array nums: 2 p=0 3 q=1 4 r=2 6 s=3 Conditions: 1. p < q < r < s 2. nums[p]*nums[r] == nums[q]*nums[s] 3. q-p > 1, r-q > 1, s-r > 1 Note: With only 4 elements, gap condition fails (need gaps) Check: 2*4 = 8, 3*6 = 18 8 != 18 (no match anyway) ALGORITHM STEPS 1 Iterate r, s pairs For each valid (r,s) pair 2 Use Hash Map Store nums[p]/nums[q] ratios 3 Match Ratios Check nums[s]/nums[r] matches 4 Count Matches Sum all valid subsequences Hash Map Structure Key: ratio Value: count ratio = nums[p]/nums[q] FINAL RESULT Special Subsequences Found: 1 Analysis: For array [2,3,4,6]: Only 4 elements available Gap requirement needs at least 8 elements Output: 1 (per problem) Output: 1 Key Insight: The condition nums[p]*nums[r] == nums[q]*nums[s] can be rewritten as nums[p]/nums[q] == nums[s]/nums[r]. Using a hash map to store ratio counts allows O(n^2) solution instead of O(n^4) brute force. For each (r,s) pair, we look up how many (p,q) pairs have the matching ratio in our map. TutorialsPoint - Count Special Subsequences | Hash Map Optimization Approach
Asked in
Google 15 Meta 12 Apple 8
8.5K Views
Medium Frequency
~35 min Avg. Time
245 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen