文章目录
1. 题目
2. 思路
(1) 哈希表
- 原式可以转换为nums[a]+nums[b]==nums[d]-nums[c]。
- 由于b
- 此时,向后遍历d,即可得到等式右边的值nums[d]-nums[b+1],并将其加入哈希表中,统计该右值的数量。
- 然后,向前遍历a,即可得到等式左边的值nums[a]+nums[b],并从哈希表中查找相等右值的数量。
3. 代码
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public int countQuadruplets(int[] nums) {
int n = nums.length;
int res = 0;
Map count = new HashMap<>();
for (int b = n - 3; b >= 1; b--) {
for (int d = b + 2; d < n; d++) {
int right = nums[d] - nums[b + 1];
count.put(right, count.getOrDefault(right, 0) + 1);
}
for (int a = 0; a < b; a++) {
int left = nums[a] + nums[b];
res += count.getOrDefault(left, 0);
}
}
return res;
}
}