Wpis z mikrobloga

W sziszarpie ino cyk:

uint[] array = {3, 1, 4, 1, 1, 3, 3};

Dictionary dict = new Dictionary();
foreach (uint number in array)
{
if (dict.ContainsKey(number))
{
dict[number]++;
}
else
{
dict.Add(number, 1);
}
}

uint result = dict.Where(i => i.Value == 1).Select(i => i.Key).SingleOrDefault();

Console.WriteLine(result);

Z tym stałym czasem dostępu do pamięci, w zadankach tego typu, od razu powinna się świecić lampka - "użyj hasz tejbli"! W C# to dictionary
@asunez: potrzebujemy operacji, która "wyczyści" wartość za 3cim zastosowaniem tej samej liczby.
XAAA ma dać z powotem X. W ten sposób "dodając" kolejne liczby z tablicy wyczyszczą się wszystkie oprócz poszukiwanej.
Taką operacją jest coś w stylu xora, z tym że nie na logicznych/binarnych wartościach, ale na systemie o podstawie 3. Gdzie 1+1=2 2+1=10. Nasz "xor" działa tak 0xor1=1 1xor1=2 2xor1=0