在C#中,實現自定義的去重函數可以使用多種方法
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9 };
int[] uniqueNumbers = RemoveDuplicates(numbers);
Console.WriteLine("Original array:");
foreach (int number in numbers)
{
Console.Write(number + " ");
}
Console.WriteLine("\nUnique array:");
foreach (int number in uniqueNumbers)
{
Console.Write(number + " ");
}
}
static int[] RemoveDuplicates(int[] numbers)
{
// 使用HashSet去重
HashSet<int> uniqueNumbersSet = new HashSet<int>(numbers);
int[] uniqueNumbersArray = uniqueNumbersSet.ToArray();
return uniqueNumbersArray;
}
}
在這個示例中,我們使用了HashSet
類來實現去重。HashSet
是一個無序且不包含重復元素的集合。首先,我們將原始數組轉換為HashSet
,這將自動刪除所有重復元素。然后,我們將HashSet
轉換回數組并返回結果。
如果你需要保留原始數組的順序,你可以使用以下方法:
static int[] RemoveDuplicates(int[] numbers)
{
// 使用Dictionary去重并保留順序
Dictionary<int, bool> uniqueNumbersDict = new Dictionary<int, bool>();
foreach (int number in numbers)
{
if (!uniqueNumbersDict.ContainsKey(number))
{
uniqueNumbersDict[number] = true;
}
}
int[] uniqueNumbersArray = uniqueNumbersDict.Keys.ToArray();
return uniqueNumbersArray;
}
在這個示例中,我們使用了Dictionary
類來實現去重。我們遍歷原始數組,并將每個元素添加到Dictionary
中。如果元素已經存在于Dictionary
中,我們跳過它。最后,我們將Dictionary
的鍵轉換為數組并返回結果。這將保留原始數組的順序。