1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int countQuadruplets(int[] nums) { int n = nums.length; int count = 0;
Map<Integer, Integer> cdDiffToCountMap = new HashMap<>(); for (int b = n - 3; b >= 1; b--) { for (int d = b + 2; d < n; d++) { int cdDiff = nums[d] - nums[b + 1]; cdDiffToCountMap.put(cdDiff, cdDiffToCountMap.getOrDefault(cdDiff, 0) + 1); }
for (int a = 0; a < b; a++) { int target = nums[a] + nums[b]; count += cdDiffToCountMap.getOrDefault(target, 0); } }
return count; } }
|
注意题目要求了四元组中元素保持原顺序,所以不能排序。
References
1995. Count Special Quadruplets