Не правильно работает поиск отличий элементов в массиве

Дан массив целых чисел нечетной длины, в котором все числа одинаковы, за исключением одного числа. Мне нужно создать метод который возвращает цифру которая отличается от большинства элементов массива. У меня есть метод который принимает такой массив. К примеру, я передаю такой массив [1,1,2,1,1] . И я получаю ожидаемый результат в виде двойки. Но когда я двойку ставлю первым элементом [2,1,1,1,1], результат уже единица. Помогите решить проблему.

Вот мой метод:

     public static int Stray(int[] numbers)
            {
            int temp;
               for (int i=0; i < numbers.Length; i++){
                   for (int j = i + 1; j < numbers.Length; j++){ 
                       if (numbers[i] != numbers[j]){
                           temp = numbers[j];
                           Console.WriteLine(temp); 
                           return temp;
                       }
                   }
               }
                return 0;
            }

Ответы (3 шт):

Автор решения: MBo
int temp = 0;
for (int i=0; i < numbers.Length; i++)
    temp ^= numbers[i];
return temp;
→ Ссылка
Автор решения: Stanislav Volodarskiy

Сколько раз повторится внешний цикл? Только один. Внутренний цикл обязательно найдёт пару не равных элементов и завершит работу.

Программа свелась к сравнению первого элемента со всеми остальными. И если первый элемент не равен элементу j, будет выдан элемент j. А первый элемент вы не возвращаете никогда.

Если отличающийся элемент на первом месте, программа ошибается.

→ Ссылка
Автор решения: Nowhere Man

Так как известно, что длина массива нечётная, значит он содержит как минимум 1 элемент, поэтому цикл можно начинать с 1 и проверять сразу 2 следующих элемента:

public static int Stray(int[] arr) {
    int num = arr[0];
    for (int i = 1; i < arr.Length; i += 2) {
        if (num != arr[i]) {
            if (arr[i] != arr[i + 1]) {
                return arr[i];
            } else {
                 return num;
            }
        } else if (num != arr[i + 1]) {
            return arr[i + 1];
        }
    }
    return num;
}
→ Ссылка