题目要求:在一个数组 nums
中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。(出自r 剑指 Offer 56 - II. 数组中数字出现的次数 II)
一开始我用的两个HashSet来储存 和 判断 是否有重复的数字。比较麻烦,代码如下:
public class Solution {
public int SingleNumber(int[] nums) {
HashSet<int> list = new HashSet<int>();
HashSet<int> su = new HashSet<int>();
bool isTrue = true;
foreach(var k in nums)
{
if(list.Contains(k))
{
su.Add(k);
list.Remove(k);
}
else
{
isTrue = true;
foreach(var s in su)
{
if(s == k)
{
isTrue = false;
}
}
if(isTrue == true)
{
list.Add(k);
}
}
}
return list.ToArray()[0];
}
}
后来看解析寻找到一行代码解决(linq.GroupBy)
return nums.GroupBy(a => a).First(a => a.Count() == 1).Key;
也是有点震惊...