题目描述
若存在两个整数数组 arr1,arr2 和一个整数 d ,需要我们返回两个数组之间的距离值
「距离值」 定义为符合此距离要求的元素数目:对于元素 ,不存在任何元素
满足
C 语言具体代码实现
先看看作者本人的想法:模拟枚举!!!
首先假设 arr1 中的所有元素都符合要求,然后利用两个循环来筛选掉不符合的元素
#include <stdio.h>
#include <math.h>
int findTheDistanceValue(int *arr1, int arr1Size, int *arr2, int arr2Size, int d){
int index = arr1Size; // 初始化元素全部符合要求
for(int i = 0; i < arr1Size; i++){
for(int j = 0; j < arr2Size; j++){
if(abs(arr1[i]-arr2[j]) <= d){ // 发现有元素不符合要求
index--;
break;
}
}
}
return index;
}
int main(void){
int nums_1[] = {4, 5, 8};
int nums_2[] = {10, 9, 1, 8};
int num_size = findTheDistanceValue(nums_1, 3, nums_2, 4, 2);
printf("符合要求的元素:%d", num_size); // 符合要求的元素:2
return 0;
}
此题的二分查找作者还没看懂!!!