Ich kann nur an diesen naiven Algorithmus denken. Irgendein besserer Weg? C/C++, Ruby, Haskell ist in Ordnung.Algorithmus erhalten Sie eine neue Liste, die kein doppeltes Element enthält, indem Sie 2 Elemente in einem großen Array hinzufügen
arry = [1,5,.....4569895] //1000000 elements ,sorted , no duplicated
newArray = Hash.new
for (i = 0 ; i < arry.length ;i++)
{
for (j = 0 ; j < arry.length ;j ++)
{
elem = arry[i] + arry[j]
if (! newArray.key?(elem))
{
newArray [elem] = arry[i] + arry[j]
}
}
}
EDIT: Entschuldigung. Ich habe diskreten Wert im Array, anstelle von [1..1000000]
beachten Sie, dass Sie das innere 'for' optimieren können:' für (j = i; ...) ' –
sollten Sie besser erklären ** was Sie haben ** und ** was Sie wollen ** – dfa
In meiner Interpretation : [1,3,5,7] -> [1 + 3, 1 + 5, 1 + 7 = 3 + 5, 3 + 7, 5 + 7] = [4,6,8,10,12] – Zed