eg:1,7,3,4,11,1,13,6,11,7,4,13,1,6,1 -> 3
方法一:比较low的方法
static void Main(string[] args)
{
int[] number = { 1, 7, 3, 4, 11, 1, 13, 6, 11, 7, 4, 13, 1, 6, 1 };
Dictionary<int, int> dict = new Dictionary<int, int>();
for (int i = 0; i < number.Length; i++)
{
if (!dict.ContainsKey(number[i]))
{
dict.Add(number[i], 1);
}
else
{
dict[number[i]] += 1;
}
}
foreach (var k in dict)
{
if (k.Value % 2 != 0)
{
Console.WriteLine("出现奇数次的数为:" + k.Key);
break;
}
}
}
方法二:使用二进制
static void Main(string[] args)
{
int[] number = {1,7,3,4,11,1,13,6,11,7,4,13,1,6,1};
int result = 0;
for (int i = 0; i < number.Length; i++)
{
result ^= number[i];
}
Console.WriteLine("出现奇数次的数为:"+result);
}
1.可以对number数组进行从小到大排序,排序后看起来比较方便;
2.0与二进制数异或是二进制数本身,两个相同的二进制数异是0