2019/12/1
重新整理了一个哈希,用哈希没之前写的那么复杂:
public int SingleNumber(int[] nums) {
int res = 0;
HashSet<int> kinds = new HashSet<int>();
for (int i = 0; i < nums.Length; i++)
{
if (kinds.Contains(nums[i]))
{
kinds.Remove(nums[i]);
}
else
{
kinds.Add(nums[i]);
}
}
foreach (var item in kinds)
{
res = item;
}
return res;
2019/1/28
It is an easy level algorithm. I chose to use XOR operation to find the answer.
public int SingleNumber(int[] nums) {
int sum = 0;
foreach (var item in nums)
{
sum ^= item;
}
return sum;
}
}
(哈希set)解题思路 :
以此为例 nums:4, 1, 2, 1, 2
hashset 拿到:4,1,2
如果hashset包含nums 则remove(移除),否则add(添加),由此拿到了 1 2
最后 判断hashset !containt(包含) nums的 则拿到了 4
public static int SingleNumber(int[] nums)
{
int res=0;
HashSet<int> kinds = new HashSet<int>();
for (int i = 0; i < nums.Length; i++)
{
kinds.Add(nums[i]);
}
for (int i = 0; i < nums.Length; i++)
{
if (kinds.Contains(nums[i]))
{
kinds.Remove(nums[i]);
}
else
{
kinds.Add(nums[i]);
}
}
//拿到了12
for (int i = 0; i < nums.Length; i++)
{
if (!kinds.Contains(nums[i]))
{
res = nums[i];
}
}
return res;
}
调用:
public static void Main(string[] args)
{
int[] t = new int[] { 4, 1, 2, 1, 2 };
int ss= SingleNumber(t);
Console.WriteLine(ss);
Console.ReadKey();
}