寻找第一个出现次数为1的数字

题目要求:在一个数组 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;

也是有点震惊...

猜你喜欢

转载自blog.csdn.net/Sea3752/article/details/123691728