c#获取数组重复元素最优算法
时间: 2023-10-19 07:29:53 浏览: 105
可以使用 Dictionary 或 HashSet 来实现获取数组重复元素的最优算法,具体实现如下:
```csharp
int[] arr = { 1, 3, 2, 4, 2, 3, 4, 5 };
Dictionary<int, int> dict = new Dictionary<int, int>();
HashSet<int> set = new HashSet<int>();
foreach (int num in arr)
{
if (!dict.ContainsKey(num))
{
dict[num] = 1;
}
else
{
dict[num]++;
}
if (dict[num] > 1)
{
set.Add(num);
}
}
```
上述代码中,我们首先定义了一个整型数组 arr,然后使用 Dictionary 来记录每个数字出现的次数,如果出现次数大于 1 就将其添加到 HashSet 中。由于 HashSet 中不能包含重复元素,因此最终 HashSet 中的元素就是数组中的重复元素。
相关问题
c#获取数组中重复时间最优算法
如果要获取数组中重复的元素,可以使用 HashSet 或者 Dictionary。
使用 HashSet 的算法如下:
```csharp
int[] arr = { 1, 2, 3, 4, 2, 3, 4, 5 };
HashSet<int> set = new HashSet<int>();
HashSet<int> duplicates = new HashSet<int>();
foreach(int num in arr)
{
if(!set.Add(num))
{
duplicates.Add(num);
}
}
foreach(int d in duplicates)
{
Console.WriteLine(d);
}
```
上述代码中,我们首先定义了一个整型数组 arr,然后使用 HashSet 来判断一个数字是否已经被添加到集合中。如果一个数字已经被添加过,说明它是重复的,我们将其添加到另一个 HashSet 中。最后,遍历重复数字的 HashSet 并输出即可。
使用 Dictionary 的算法如下:
```csharp
int[] arr = { 1, 2, 3, 4, 2, 3, 4, 5 };
Dictionary<int, int> dict = new Dictionary<int, int>();
foreach(int num in arr)
{
if(!dict.ContainsKey(num))
{
dict[num] = 1;
}
else
{
dict[num]++;
}
}
foreach(KeyValuePair<int, int> pair in dict)
{
if(pair.Value > 1)
{
Console.WriteLine(pair.Key);
}
}
```
上述代码中,我们首先定义了一个整型数组 arr,然后使用 Dictionary 来记录每个数字出现的次数。如果一个数字出现次数大于 1,说明它是重复的,我们将其输出即可。
阅读全文