Заполнить двумерный массив целыми не повторяющимися числами
Необходимо заполнить двумерный массив целыми не повторяющимися числами, как проверить на то что числа целые я проверил, а вот с проверкой встречается ли вводимый элемент не могу, есть ли способ проще чем еще один перебор всех элементов
using System;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
int[,] Data = new int[x, y];
int i,j,m,n;
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
Console.WriteLine("Введите элемент массива [" + i + ","+j+"]:");
int z = 0;
string input_data = Console.ReadLine();
bool success_data = false;
while (success_data == false)
if (Int32.TryParse(input_data, out z))
{
Data[i, j] = z;
success_data = true;
}
else
{
Console.WriteLine("Некорректный ввод, введите корректное значение");
input_data = Console.ReadLine();
}
}
}
}
}
}
Ответы (1 шт):
Автор решения: 4per
→ Ссылка
Добавьте хэшсет var existValues = new HashSet<int>(x*y). Перед добавлением проверяйте (Contains(z)) есть ли значение уже в хэшсете, если нет --- добавляйте в хэшсет (.Add(z)) и массив, если есть --- запрашиваете новое.
Это вариант, как вы хотели, без перебора массива, но с приблизительно двойным расходом памяти.