[英]C++ : Find the closest values in an array
我正在寻找一种在数组中搜索两个最接近的值并返回它们之间的差的漂亮方法。
例如:如果我给这些数字:10,1,43,59,78,46,63,12
他必须找到10 / 12、43 / 45并返回2。
我发现有很多方法可以找到与给定数字最接近的值,但从未找到仅找到两个没有给定数字的最接近值的方法。
我尝试使用它来提高效率,但它对我而言并非每次都奏效,有人有想法吗?
我的代码目前是这样的:
set<int> numbers;
//imagine i set many values in numbers here
int diff = 100000000;
for (set<int>::iterator it=numbers.begin(); it!=numbers.end();)
{
int first = *it;
int second = *(++it);
diff = min(abs(second-first), diff_min);
}
cout << diff << endl;
谢谢。
可以使用哈希表,但会增加空间复杂性。
如果您对它的可伸缩性感兴趣,可以使用一种O(N)方法(或者无论如何都可以接近)...它基于对数字进行装箱 ,然后仅在考虑靠近箱的情况下搜索最短距离。
如果有兴趣,我会在后面进一步阐述。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.