求一个数组中与某一个数的差值最小的下标,如果数组中有重复的 就都返回 C++代码实现,
时间: 2024-10-13 10:03:16 浏览: 26
milley#ARTS#C++给定一个值中求数组元素最小差值1
在C++中,你可以通过遍历数组并维护两个变量,一个是最小差值,另一个是最接近给定数的元素下标。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <vector>
int findClosestDifference(std::vector<int>& nums, int target) {
if (nums.empty()) return -1; // 如果数组为空,返回-1
int min_diff = INT_MAX;
int closest_index = -1;
for (size_t i = 0; i < nums.size(); ++i) {
int diff = std::abs(nums[i] - target); // 计算当前元素与目标的差值
if (diff < min_diff && nums[i] != target) { // 如果差值更小且不是目标值本身
min_diff = diff;
closest_index = i;
}
else if (nums[i] == target && closest_index == -1) { // 如果找到目标值且之前未找到
closest_index = i;
}
}
return closest_index;
}
int main() {
std::vector<int> nums = {4, 5, 6, 7, 8, 9, 9};
int target = 7;
int result = findClosestDifference(nums, target);
if (result != -1)
std::cout << "The index with the smallest difference is: " << result << "\n";
else
std::cout << "No elements found within the given array.\n";
return 0;
}
```
这个函数`findClosestDifference`会返回一个整数,表示数组中最接近`target`数值的那个元素的索引。如果找不到这样的元素,它会返回-1。
阅读全文