【发布时间】:2015-05-13 19:32:03
【问题描述】:
我在寻找亚马逊面试问题时遇到了这个问题并想问。
给定一个数字,如何在一系列浮点数据中找到最接近的数字?
如果一切都是整数,答案是从数组中的每个数字中减去数字,然后在数组中寻找绝对值最小的元素。
但是当涉及到浮点时,它应该是非常nontirival的。
阿尼的想法??谢谢。
【问题讨论】:
-
你认为浮点数为什么会改变算法?
-
“系列”到底是什么意思?您可以对其进行排序并使用二进制搜索吗?二进制搜索不应该有浮点问题。
-
If everything is integer , answer is substracting the number from every number in the array, then look for the minimal element of the array.不是指最小绝对值(即最接近零)吗?还是我完全误解了你想要达到的目标? -
@MarkRansom 浮点的问题是精度有限。示例:1)
x=1e100, arr=[-1, 1, 0]。答案应该是1,但所有abs的差异值都等于1e100; 2)x = 1; arr = [-1e100, 1e100]。那么答案应该是1e100,但两者的差异abs等于1e100。 (并且二进制搜索在后一种情况下也无济于事......) -
@amit,你完全正确。我的意思是绝对值,我的写法不正确。
标签: algorithm floating-point-precision