查找与给定数字最接近的数字总和

彼德

假设我有一个列表[1,2,3,4,5,6,7],我想找到最接近给定数字的数字总和。对不起的解释很抱歉,但是这里有一个例子:

假设我有一个列表[1,2,3,4,5,6,7]我想找到最接近的数字,例如10。

然后该方法应返回6和4或7和3,因为它最接近他可以得到10。所以5 + 4将是错误的,因为那是9并且他可以得出10。

另一个示例:您想要最接近14的那个,那么他应该返回7和6

如果您有任何疑问,请PLZ询问,因为它很难解释我想要的内容:P

Sabithpocker

对于函数combinelocationOf中,从不同的答案采取不同的作者写的。

printClosest([0.5,2,4] , 5);
printClosest([1, 2, 3, 4, 5, 6, 7], 28);
printClosest([1, 2, 3, 4, 5, 6, 7], 10.9);
printClosest([1, 2, 3, 4, 5, 6, 7], 10, 2);
printClosest([1, 2, 3, 4, 5, 6, 7], 10, 3);
printClosest([1, 2, 3, 4, 5, 6, 7], 14, 2);

function printClosest(array, value, limit) {
  var checkLength = function(array) {
    return array.length === limit;
  };
  var combinations = combine(array); //get all combinations
  combinations = limit ? combinations.filter(checkLength) : combinations;//limit length if required
  var sum = combinations.map(function(c) { //create an array with sum of combinations
    return c.reduce(function(p, c) {
      return p + c;
    }, 0)
  });
  var sumSorted = sum.slice(0).sort(function(a, b) {//sort sum array
    return a - b;
  });

  index = locationOf(value, sumSorted);//find where the value fits in
  //index = (Math.abs(value - sum[index]) <= Math.abs(value - sum[index + 1])) ? index : index + 1;
  index = index >= sum.length ? sum.length - 1 : index;
  index = sum.indexOf(sumSorted[index]);//get the respective combination

  console.log(sum, combinations, index);

  document.getElementById("result").innerHTML += "value : " + value + " combi: " + combinations[index].toString() + " (limit : " + (limit || "none") + ")<br>";
}


function combine(a) {
  var fn = function(n, src, got, all) {
    if (n == 0) {
      if (got.length > 0) {
        all[all.length] = got;
      }
      return;
    }
    for (var j = 0; j < src.length; j++) {
      fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);
    }
    return;
  }
  var all = [];
  for (var i = 0; i < a.length; i++) {
    fn(i, a, [], all);
  }
  all.push(a);
  return all;
}

function locationOf(element, array, start, end) {
  start = start || 0;
  end = end || array.length;
  var pivot = parseInt(start + (end - start) / 2, 10);
  if (end - start <= 1 || array[pivot] === element) return pivot;
  if (array[pivot] < element) {
    return locationOf(element, array, pivot, end);
  } else {
    return locationOf(element, array, start, pivot);
  }
}
<pre id="result"><pre>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找最接近特定数字的数字总和

来自分类Dev

查找与给定数字最接近的k个数字

来自分类Dev

排序最接近给定数字的数字

来自分类Dev

查找给定数字的总和

来自分类Dev

如何找出总和最接近给定数字的给定向量的最佳组合

来自分类Dev

如何在数组中查找最接近给定数字的值

来自分类Dev

查找给定数字集的排列,其总和接近目标数

来自分类Dev

SQL:通过关系查找最接近给定值的数字

来自分类Dev

查找最接近0的数字

来自分类Dev

舍入到给定数字数组中最接近的数字

来自分类Dev

如何在距x的距离处找到与给定数字最接近的n个数字?

来自分类Dev

如何在距x的距离处找到与给定数字最接近的n个数字?

来自分类Dev

通过总和最接近给定数的2D数组查找路径

来自分类Dev

通过总和最接近给定数的2D数组查找路径

来自分类Dev

查找总和为给定数字的值组合的函数

来自分类Dev

如何在数组中找到最接近给定数字的值?

来自分类Dev

如何使用C中的for循环找到给定数字的最接近素数?

来自分类Dev

在列表中找到与给定数字最接近的较小和较大值的最佳方法是什么

来自分类Dev

获取列表中某个给定数字的 3 个最接近的值?

来自分类Dev

查找与数字中最接近的因子

来自分类Dev

查找最接近列表目标和的数字

来自分类Dev

在字典中查找数字的最接近的下键

来自分类Dev

查找给定数字的整数

来自分类Dev

给定一个浮点数,查找列表中还是最接近的数字

来自分类Dev

查找大于当前数字的最接近数字的索引

来自分类Dev

从n个数字的总和中找到最接近的n

来自分类Dev

MySQL返回值最接近特定数字的行

来自分类Dev

给定目标总和和一组整数,找到添加到该目标的最接近的数字子集

来自分类Dev

如何使用熊猫将给定数字四舍五入到最接近的指定倍数?

Related 相关文章

  1. 1

    查找最接近特定数字的数字总和

  2. 2

    查找与给定数字最接近的k个数字

  3. 3

    排序最接近给定数字的数字

  4. 4

    查找给定数字的总和

  5. 5

    如何找出总和最接近给定数字的给定向量的最佳组合

  6. 6

    如何在数组中查找最接近给定数字的值

  7. 7

    查找给定数字集的排列,其总和接近目标数

  8. 8

    SQL:通过关系查找最接近给定值的数字

  9. 9

    查找最接近0的数字

  10. 10

    舍入到给定数字数组中最接近的数字

  11. 11

    如何在距x的距离处找到与给定数字最接近的n个数字?

  12. 12

    如何在距x的距离处找到与给定数字最接近的n个数字?

  13. 13

    通过总和最接近给定数的2D数组查找路径

  14. 14

    通过总和最接近给定数的2D数组查找路径

  15. 15

    查找总和为给定数字的值组合的函数

  16. 16

    如何在数组中找到最接近给定数字的值?

  17. 17

    如何使用C中的for循环找到给定数字的最接近素数?

  18. 18

    在列表中找到与给定数字最接近的较小和较大值的最佳方法是什么

  19. 19

    获取列表中某个给定数字的 3 个最接近的值?

  20. 20

    查找与数字中最接近的因子

  21. 21

    查找最接近列表目标和的数字

  22. 22

    在字典中查找数字的最接近的下键

  23. 23

    查找给定数字的整数

  24. 24

    给定一个浮点数,查找列表中还是最接近的数字

  25. 25

    查找大于当前数字的最接近数字的索引

  26. 26

    从n个数字的总和中找到最接近的n

  27. 27

    MySQL返回值最接近特定数字的行

  28. 28

    给定目标总和和一组整数,找到添加到该目标的最接近的数字子集

  29. 29

    如何使用熊猫将给定数字四舍五入到最接近的指定倍数?

热门标签

归档