给你一个整数数组nums
和一个整数k
,请你返回数对(i, j)
的数目,满足i < j
且|nums[i] - nums[j]| == k
。
|x|
的值定义为:
- 如果
x >= 0
,那么值为x
。 - 如果
x < 0
,那么值为-x
。
示例 1:
输入:nums = [1,2,2,1], k = 1
输出:4
解释:差的绝对值为 1 的数对为:
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]
- [1,2,2,1]
示例 2:
输入:nums = [1,3], k = 3
输出:0
解释:没有任何数对差的绝对值为 3 。
示例 3:
输入:nums = [3,2,1,5,4], k = 2
输出:3
解释:差的绝对值为 2 的数对为:
- [3,2,1,5,4]
- [3,2,1,5,4]
- [3,2,1,5,4]
提示:
1 <= nums.length <= 200
1 <= nums[i] <= 100
1 <= k <= 99
- 暴力检索
Python:class Solution: def countKDifference(self, nums: List[int], k: int) -> int: total = 0 for i in range(len(nums)-1): for j in range(i+1, len(nums)): if abs(nums[i] - nums[j]) == k: total += 1 return total
Java:
class Solution { public int countKDifference(int[] nums, int k) { int total = 0; for(int i = 0; i < nums.length-1; i++) { for(int j = i+1; j < nums.length; j++) { if(Math.abs(nums[i] - nums[j]) == k) { total++; } } } return total; } }
-
计数
Python:class Solution: def countKDifference(self, nums: List[int], k: int) -> int: total = 0 index = [0 for i in range(101)] for num in nums: index[num] += 1 for i in range(len(index)-k): total += index[i] * index[i+k] return total
Java:
class Solution { public int countKDifference(int[] nums, int k) { int total = 0; int index[] = new int[101]; for(int num: nums) { index[num] += 1; } for(int i = 0; i < index.length-k; i++) { total += index[i] * index[i+k]; } return total; } }
留言