【问题标题】:how to minimize the absolute difference?如何最小化绝对差异?
【发布时间】:2021-05-15 15:29:40
【问题描述】:

我们得到一个数字 n。我们必须找到两个(即sum1,sum2),使得sum1+sum2=数字之和[1到n],并且sum1和sum2的绝对差最小。

eg:-let n=3

sum1=1+2
sum2=3
abs(3-3)=0 (minimum possible value that we can get)

【问题讨论】:

  • sum1=1+2的目的是什么?它与问题有关吗? sum1sum2 也可以是负数吗?
  • 您想要从1n 的所有数字的总和或从1n 的所有数字的总和?
  • 目的是两个将n位数的总和分成两部分(假设我们有两个变量sum1和sum2和sum1+sum2==n(n+1)/2)但是绝对( sum1-sum2) 必须是最小值

标签: algorithm logic


【解决方案1】:

我的函数 findSum1Sum2(n) 接收一个整数正数“n”(参数)并将所有数字求和。然后找到两个条件的sum1和sum2:

  • sum1 + sum2 = 数字 n 的所有数字之和。
  • |sum1 - sum2|已最小化。

我假设 sum1 和 sum2 可以具有相同的值。

function findSum1Sum2(n) {
  if(Number.isInteger(n) && n >= 0) {
    let sumNumberDigits = 0;
    let sum1, sum2;

    for(let d of n.toString()) {
      sumNumberDigits += parseInt(d);
    }

    if(sumNumberDigits % 2 == 0) {
      sum1 = sum2 = sumNumberDigits / 2;
    } else {
      sum1 = Math.floor(sumNumberDigits / 2);
      sum2 = sum1 + 1;
    }

    console.log(`sum1 is ${sum1} and sum2 is ${sum2}. sum1 + sum2 is ${sum1 + sum2}. |sum1 - sum2| is ${Math. abs( sum1 - sum2)}.`);
  } else {
    console.log(`${n} is not an integer positive number.`);
  }
  
}

findSum1Sum2(3); //result -> sum1: 1 and sum2: 2.
findSum1Sum2(111); //result -> sum1: 1 and sum2: 2.
findSum1Sum2(4); //result -> sum1: 2 and sum2: 2.
findSum1Sum2(4388); //result -> sum1: 2 and sum2: 2.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多