假设我有一组10个介于0到100之间的随机数。
运算符还给了我一个0到100之间的随机数。然后我找到了集合中与该运算符给我的数字最接近的数字。
集合= {1,10,34,39,69,89,94,96,98,100}
操作员人数= 45
回报= 39
以及如何将其转换为代码?(JavaScript或其他内容)
如果set是有序的,请执行二进制搜索以找到最接近的值(或2个值)。然后通过减去…来区分2中最接近的那个?
如果没有对set进行排序,则只需遍历set(对它本身进行一次以上排序),然后对于每个成员,检查差异是否小于到目前为止所看到的最小差异,以及是否小于是,将其记录为新的最小差异,并将该数字记录为新的候选答案。。
public int FindClosest(int targetVal, int[] set) { int dif = 100, cand = 0; foreach(int x in set) if (Math.Abs(x-targetVal) < dif) { dif = Math.Abs(x-targetVal); cand = x; } return cand; }