没想到C#的修改value值,可以直接 dis[key] = value 进行修改~~~
1. 题目描述
2. 题目分析
- 每个数字在数组中出现的次数是独一无二的
- 思路一:桶排,看了看数据范围,挺小,可以桶排
- 思路二:字典(HashMap),最后Value都是等于1的返回true
3. 题目代码
public static bool UniqueOccurrences(int[] arr)
{
Dictionary<int, int> dic = new Dictionary<int, int>();
for (int i = 0; i < arr.Length; i++)
{
if (dic.ContainsKey(arr[i]))
{
int x = 0;
dic.TryGetValue(arr[i], out x);
x++;
dic[arr[i]] = x;
}
else
{
dic.Add(arr[i], 1);
}
}
Dictionary<int, int> dis = new Dictionary<int, int>();
foreach (int value in dic.Values)
{
if (dis.ContainsKey(value))
{
int x = 0;
dis.TryGetValue(value, out x);
x++;
dis[value] = x;
}
else
{
dis.Add(value, 1);
}
}
foreach (int value in dis.Values)
{
if (value != 1)
{
return false;
}
}
return true;
}