【问题标题】:Thinking Process of an algorithm of find the missing element in a given permutation from Codility从 Codility 寻找给定排列中缺失元素的算法的思考过程
【发布时间】:2015-01-28 04:34:28
【问题描述】:

我找到了Codility's PermMissingElem Question 的完美答案。

function solution($A) {
    $N   = count($A);
    $sum = ($N + 2) * ($N + 1) / 2;
    for($i = 0; $i < $N; $i++){
        $sum -= $A[$i];
    }
    return intval($sum);
}

但是我发现它对 $sum 的功能感到困惑。这是一个什么样的功能?这真是令人惊讶的正确,但是,为什么有人可以编造出这样的功能呢? 有没有人可以以某种方式对思维过程进行逆向工程? 我真的很想知道这个过程是如何产生的。

谢谢!

【问题讨论】:

标签: php algorithm sorting


【解决方案1】:

1到N的整数之和可以用这个公式计算:

N(N+1)/2

基本上,你把第一个数字和最后一个数字加在一起,然后是第二个数字和倒数第二个数字..等等。

例如:

1到100的和:

(1+100) + (2+99) + (3+98) + (4+97) ...
= (100/2)(101)
= 50 x 101

这里有一个很好的解释:

http://www.wikihow.com/Sum-the-Integers-from-1-to-N

【讨论】:

  • 我知道它的业余爱好者......但它只是哇,仍然,太棒了!......几年前学会了,完全忘记了,哈哈谢谢伙计:)
猜你喜欢
  • 2018-04-20
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 2018-09-26
相关资源
最近更新 更多