Как удалить повторения в выводе, не прибегая к еще одному циклу?
Данный код создает 6 случайных чисел и записывает их в массив, после чего чистит его от повторений, но бывает такое, что повторений больше чем 2 и код повторно выводит это значение. Как я могу вывести повторения, как бы это смешно не звучало, без повторений?
Random num = new Random();
int[] Values = new int[6];
for (int i = 0; i < Values.Length; i++)
{
Values[i] = num.Next(10);
}
Array.Sort(Values);
for (int i = 1; i < Values.Length; i++)
{
if(Values[i]==Values[i-1])
{
Console.WriteLine(Values[i]);
}
}
Ответы (3 шт):
Автор решения: A K
→ Ссылка
Как я могу вывести повторения, как бы это смешно не звучало, без повторений?
Мне не нужен массив без повторений, мне как раз и нужно вывести повторения
void Main()
{
var nums = new[] {1,2,2,3,4,5,5,5,7};
GetDupes(nums).Dump();
}
// You can define other methods, fields, classes and namespaces here
public int[] GetDupes(int[] nums)
{
var dict = new HashSet<int>();
var result = new HashSet<int>();
foreach (var item in nums)
{
if(dict.Contains(item))
result.Add(item);
else
dict.Add(item);
}
return result.ToArray();
}
Автор решения: Lono
→ Ссылка
Используя HashSet я решил следующим образом не прибегая к List и к Linq в целом
Random num = new Random();
int[] Values = new int[6];
for (int i = 0; i < Values.Length; i++)
{
Values[i] = num.Next(10);
}
HashSet<int> povt = new HashSet<int>();
for (int i = 1; i < Values.Length; i++)
{
if(Values[i]==Values[i-1])
{
povt.Add(Values[i]);
}
}
foreach (int pov in povt)
{
Console.WriteLine(pov);
}
Автор решения: Andrei Khotko
→ Ссылка
Как удалить повторения в выводе, не прибегая к еще одному циклу?
Если отвечать именно на этот вопрос, то код, решающий конкретную задачу автора, следующий:
Random num = new Random();
int[] Values = new int[6];
var hashSet = new HashSet<int>();
for (int i = 0; i < Values.Length; i++)
{
Values[i] = num.Next(10);
if (hashSet.Add(Values[i]))
{
Console.WriteLine(Values[i]);
}
}
