一尘不染

在随机集中找到最接近的数字

algorithm

假设我有一组10个介于0到100之间的随机数。

运算符还给了我一个0到100之间的随机数。然后我找到了集合中与该运算符给我的数字最接近的数字。

集合= {1,10,34,39,69,89,94,96,98,100}

操作员人数= 45

回报= 39

以及如何将其转换为代码?(JavaScript或其他内容)


阅读 308

收藏
2020-07-28

共1个答案

一尘不染

如果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;
  }
2020-07-28