Задача: реализовать метод Filter, который должен возвращать входной массив, в котором удалены элементы, которые встречаются более одного раза.
Значения в массиве должны следовать в том порядке, в котором они следуют в оригинальном массиве.
Если в массиве встречаются повторяющиеся значения, то они ВСЕ значения должны быть удалены.
Метод должен выбрасывать исключение ArgumentNullException в случае, если в метод передали null.
В решении разрешается использовать только конструкции языка. Использовать LINQ запрещено.
Сделал следующим образом, считал данные из исходного массива в HashSet<int>
и числа которые повторяются добавил в List<int>
после этого с помощью set.ExceptWith(list)
убрал числа у которых были дубликаты.
public static int[] Filter(int[] source)
{
if(source == null)
throw new ArgumentNullException();
var set = new HashSet<int>();
var list = new List<int>();
for (int i = 0; i < source.Length; i++)
{
if(!set.Add(source[i]))
list.Add(source[i]);
}
set.ExceptWith(list);
int[] newarray = new int[set.Count];
set.CopyTo(newarray);
return newarray;
}
Можно ли реализовать без помощи дополнительных структур данных? Только юзая массивы
Как-то так:
void Main()
{
var source = new[] {1, 2, 3, 4, 3, 4,5};
Filter(source).Dump();
}
// Define other methods and classes here
public static int[] Filter(int[] source)
{
if (source == null)
throw new ArgumentNullException(nameof(source));
var result = new List<int>();
for (int i = 0; i < source.Length; i++)
{
var currentElement = source[i];
if (!source.HasDuplicateFor(currentElement))
result.Add(currentElement);
}
return result.ToArray();
}
public static class MyExt
{
public static bool HasDuplicateFor(this int[] source, int needle)
{
var counter = 0;
for (int i = 0; i < source.Length; i++)
{
if (source[i] == needle)
counter++;
}
return counter > 1;
}
}
Вроде ничего Linq-шного не использовал, по факту HasDuplicateFor - это .Count из linq, просто записанный в классическом цикле for.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне нужен какой-то способ (дайте, пожалуйста, чёткий кусок кода), чтобы обнаружить, были ли изменены обои рабочего стола без прав администратора...
Написал сайт на ASPNET по видеоурокам Гоши Дударя, и столкнулся с ошибкой следующего вида: SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_OrderDetail_Order_orderId"
У меня есть Windows Forms приложение, там есть разный функционал и одна из функций - запуск написанного кодаДля этого есть несколько кнопок: открыть,...
Всем добрый деньХочу настроить логирование сервиса в БД Postgres с помощью ILogger