Не выходить за границы массива - C#
Формулировка задачи:
Здравствуйте! Я новичок и ещё только учусь. Я смог создать массив и заполнить его случайными числами от 1 до 100. Теперь я хотел бы вывести на консоль те числа, которые встречаются в массиве от двух или более раз. По моему алгоритму вылезает ошибка, что при проверке я вылезаю за границу индекса. Помогите, пожалуйста, кто чем может.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
int[] a = new int[100];
Random b = new Random();
for (int i = 0; i < a.Length; i++)
{
a[i] = b.Next(1, 101);
}
for (int i = 0; i < a.Length; i++)
{
if (a[i] == a[i + 1])
Console.WriteLine("х2: {0} {1}", a[i], a[i]);
}
Console.ReadKey();
}
}
}Решение задачи: «Не выходить за границы массива»
textual
Листинг программы
int[] a = new int[100];
Random b = new Random();
for (int i = 0; i < a.Length; i++)
a[i] = b.Next(1, 101);
HashSet<int> matches = new HashSet<int>(); // HashSet не даст добавить в себя число, которое уже содержится
for (int i = 0; i < a.Length; i++)
for (int j = i + 1; j < a.Length; j++) // j = i + 1 чтобы не проверять уже проверенные числа
if (a[i] == a[j]) matches.Add(a[i]);
foreach (var item in matches)
Console.WriteLine("х2: {0}", item);