LC 1385.Find the Distance Value Between Two Arrays
题目描述
这是 LeetCode
上的 1385.
两个数组间的距离值 - 力扣(LeetCode)
,难度为简单。
给你两个整数数组 arr1
, arr2
和一个整数
d
,请你返回两个数组之间的 距离值 。
「距离值」 定义为符合此距离要求的元素数目:对于元素
arr1[i]
,不存在任何元素 arr2[j]
满足
|arr1[i]-arr2[j]| <= d
。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
1 <= arr1.length, arr2.length <= 500
-10^3 <= arr1[i], arr2[j] <= 10^3
0 <= d <= 100
解答
方法一:模拟
根据题目要求进行暴力模拟即可。
1 |
|
时间复杂度:\(O(n \times m)\),其中
n
和m
分别为arr1
和arr2
的长度。空间复杂度:\(O(1)\)。
方法二:二分查找
根据题目要求,并不需要遍历整个 arr2
数组,只需要查看改数组中是否存在超过或者小于 arr1[i]
的距离为 d
的数,如果存在则不满足要求,如果不存在则满足要求,因此可以先将
arr2
排序之后进行二分查找。
1 |
|
- 时间复杂度:\(O((n + m)
\log m)\),给
arr2
排序的时间代价是 \(O(m \log m)\) ,对于arr1
中的每个元素都在arr2
中二分的时间代价是 \(O(n \log m)\),故渐进时间复杂度为 \(O((n + m) \log m)\)。 - 空间复杂度:\(O(1)\)。
每题一图
LC 1385.Find the Distance Value Between Two Arrays
https://chen-huaneng.github.io/2024/01/28/2024-1-28-2024-01-28-lc-1385/