擅长:python、mysql、java
<p>你知道,在一个连续的数字数组中缺少一个数字</p>
<p>假设你知道前n个数的和。设前n个数之和为s。既然前n个数中缺少一个数,我们可以得到缺失数为</p>
<p><code>s - sum of remaining numbers</code></p>
<p>现在让我们看看如何计算s</p>
<p>比如说“1,4,100</p>
<p>现在我要计算它们的和</p>
<p>我能做的一件事就是要么把它输入计算机程序/计算器,要么一个一个地求和。在</p>
<p>当老师问小高斯这个问题时,他想到的另一个方法是</p>
<p><code>let s1 = 1 + 2 + 3 + ... + 100</code></p>
<p><code>take the reverse of it,</code></p>
<p><code>let s2 = 100 + 99 + 98 + ... + 1</code></p>
<p><code>Now add s1 and s2</code></p>
<p><code>s1 + s2 = (100 + 1) + (99 + 2) + .... + (1 + 100)</code></p>
<p><code>but s1 = s2, so,</code></p>
<p><code>2s1 = 101 + 101 + ... + 101 // sequence has 100 terms</code></p>
<p>{cd9}</p>
<p>所以我们得到了,前n个数的和是<code>(n)*(n+1)/2</code>,这是一种广义的方法。这也可以用数学归纳法加以证明。在</p>
<p>对于您的问题,如果n是缺少数字的数组的长度,那么n+1必须是原始数组的大小。所以<code>s = (n+1)*(n+2)/2</code></p>