Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
rattrapper
foo();
879 / 581 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
1
.NET 4.x

Уникальны ли все элементы последовательности

02.02.2014, 13:41. Просмотров 854. Ответов 6
Метки нет (Все метки)

Интересует элегантный способ проверки, нету ли повторяющихся элементов в последовательности.
Является ли данный метод корректным?
C#
1
2
3
4
5
6
static bool Unique<T>(this IEnumerable<T> sequence)
{
    if (sequence.Skip(1).Contains(sequence.First()))
        return false;
    else return sequence.Count() == 2 ? true : sequence.Skip(1).Unique();
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 13:41
Ответы с готовыми решениями:

Сгенерировать четырехзначное число, все цифры в котором — уникальны
Здравствуйте , у меня такая проблема , мне нужно сделать рандомное четырёхзначное число при этом...

В последовательности из n целых чисел все элементы уменьшить на минимальное число последовательности
Помогите, пожалуйста! Разработать и написать алгоритм указанной задачи. В последовательности из...

Даны две последовательности целых чисел. Удалить из первой последовательности все элементы, встречающиеся во второй
Решить с помощью vector. Даны две последовательности целых чисел. Удалить из первой...

В последовательности A1,..,An все положительные элементы увеличить на 5, а все остальные заменить на 1.
Даны натуральное число n, действительные числа A1,..,An. В последовательности A1,..,An все...

6
dracon4ik
50 / 67 / 20
Регистрация: 26.06.2013
Сообщений: 194
02.02.2014, 13:50 2
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

А так не подойдет?
C#
1
2
3
4
static bool Unique<T>(this IEnumerable<T> sequence)
        {
            return sequence.Count() == sequence.Distinct().Count();
        }
1
kodv
1436 / 1109 / 344
Регистрация: 11.04.2011
Сообщений: 2,610
Завершенные тесты: 1
02.02.2014, 14:00 3
C#
1
2
3
4
static bool Unique<T>(this IEnumerable<T> sequence)
{
    return sequence.Count() == sequence.Distinct().Count();
}
Добавлено через 43 секунды
Блин, опоздал Пока до этой темы дошел, уже в точности такой же ответ появился )
0
Kruds
700 / 700 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
02.02.2014, 14:05 4
Лучший ответ Сообщение было отмечено rattrapper как решение

Решение

C#
1
2
3
4
5
public static bool IsUnique<T>(this IEnumerable<T> list)
{
    var hs = new HashSet<T>();
    return list.All(hs.Add);  
}
Добавлено через 1 минуту
Решение взял здесь. Там же кстати и объяснение почему вариант с Distinct не слишком удачный.
1
rattrapper
foo();
879 / 581 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
02.02.2014, 15:44  [ТС] 5
Kruds, спасибо.
З.Ы. не пойму почему Вы выбрали второй вариант, ведь первый явно работает быстрее
0
kolorotur
Эксперт .NET
13272 / 10301 / 2676
Регистрация: 17.09.2011
Сообщений: 17,490
Завершенные тесты: 1
02.02.2014, 15:47 6
Цитата Сообщение от rattrapper Посмотреть сообщение
ведь первый явно работает быстрее
Они идентичны, просто во втором строчек меньше.
0
rattrapper
foo();
879 / 581 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
02.02.2014, 16:01  [ТС] 7
kolorotur, кажется теперь я понял. Просто сначала подумал что Enumerable.All в любом случае перебирает ВСЕ элементы.
0
02.02.2014, 16:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2014, 16:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Удалить из последовательности все максимальные и минимальные элементы и сдвинуть все остальные к началу
пусть дана последовательность из n элементов. уменьшите ее, удалив все максимальные и минимальные...

Сложить все элементы последовательности
Вот собствено условие. Даны целые числа N (&gt; 2), A и B. Сформировать и вывести целочисленный...

Из последовательности удалить все максимальные элементы
из последовательности надо удалить все максимальные элементы вот нашел максимальный элент,а...

Заменить в последовательности все элементы их квадратами
Задана конечная последовательность целых чисел. Заменить в ней все элементы их квадратами.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.