题目
类型:数组
解题思路
根据等式关系进行移项可得:nums[a] + nums[b] = nums[d] - nums[c],其中各下标满足 a < b < c < d
在「逆序」枚举 b 时,将新产生的 c(即 b + 1位置)所能产生的新nums[d] - nums[c]的值存入哈希表(即 从[b + 2, n)范围内枚举 d),最后通过枚举 a 来统计答案
代码
class Solution {public int countQuadruplets(int[] nums) {int n = nums.length, ans = 0;int[] cnt = new int[10010];for (int b = n - 3; b >= 1; b--) {for (int d = b + 2; d < n; d++) cnt[nums[d] - nums[b + 1] + 200]++;for (int a = 0; a < b; a++) ans += cnt[nums[a] + nums[b] + 200];}return ans;}}
