我遇到了這個問題,在那裏給出了一個N
作爲輸入,然後輸入了N個數字(其中3 < = N < = N)。這些N
數字是算術級數(大小爲N+1
)的一部分,從中刪除了一個數字。所以任務是找到那個失蹤號碼。例如從給定的算術級數中找出缺失的數字
5
1 3 5 9 11
輸出是7
我想出了兩種方法,第2個路過一個所有的測試用例,但第一個在特定的(隱藏)的情況下失敗。
首先,我將解釋第二種方法
方法II
Let diff=(last_number-first_number)/N
//Considering 0 based indexing
for i=0 to (N-2)
if(array[i+1] is not equal to (array[i]+diff))
print (array[i]+diff)
break
這種方法通過了所有的測試案例。現在我實現和第一種方法失敗一定的測試用例是如下
方法我
//Considering 0 based indexing
for i=1 to (N-2)
if (2*array[i] is not equal to (array[i-1]+array[i+1])) then
if((array[i]-array[i-1])< (array[i+1]-array[i]))
print 2*array[i]-array[i-1]
else
print 2*array[i]-array[i+1]
break
誰能解釋一下什麼是錯METHOD I
?我錯過了哪些案件。 謝謝。
似乎是完全相同的副本(或至少高度相關)[這個問題](HTTP: //stackoverflow.com/q/19426660/1639625)。 –
爲什麼你使用這個條件: 如果(2 * array [i]不等於(array [i] + array [i + 1])) 如果數組是1 10 19,那麼它不會工作。 – Wasafa1
@tobias_k ..是啊..我想我們去了同一個網站..但是我想我有一個不同的問題... – alphacentauri