C# 返回元素只能重复N次的数组
我试图练习一些c#问题,我遇到了一个问题,给定一个整数数组,返回数组中只能重复N次的元素。所以,如果我有{1,2,3,4,1,1,2,3}并且我的N=2,我的结果应该是{1,2,3,4,1,2,3}。我尝试了一些东西,但得到的结果是{2,3,4,1,1,2,3}。我不想删除第一个重复的元素。 这就是我尝试过的:C# 返回元素只能重复N次的数组,c#,C#,我试图练习一些c#问题,我遇到了一个问题,给定一个整数数组,返回数组中只能重复N次的元素。所以,如果我有{1,2,3,4,1,1,2,3}并且我的N=2,我的结果应该是{1,2,3,4,1,2,3}。我尝试了一些东西,但得到的结果是{2,3,4,1,1,2,3}。我不想删除第一个重复的元素。 这就是我尝试过的: int[] intArray = {3,2,3,1,3}; int N = 2; var list = new Lis
int[] intArray = {3,2,3,1,3};
int N = 2;
var list = new List<int>(intArray);
var newList = new List<int>();
for (int i = 0; i < list.Count; i++)
{
int occur = 1;
for (int j = i+1; j < list.Count; j++)
{
if (occur < N && list[i] == list[j])
{
occur++;
newList.Add(list[j]);
}
else
{
if (list[i] == list[j] )
list.Remove(list[j]);
}
}
}
foreach (var l in list)
{
Console.WriteLine(l);
}
}
}
int[]intArray={3,2,3,1,3};
int N=2;
var列表=新列表(intArray);
var newList=新列表();
for(int i=0;i
我非常感谢任何帮助或指导。我会使用字典记录每个整数遇到的次数:
int[] intArray = { 1, 2, 3, 4, 1, 1, 2, 3 };
int N = 2;
var lookup = new Dictionary<int, int>();
LIst<int> list = new List<int>();
foreach (int num in intArray)
{
if (!lookup.ContainsKey(num))
{
lookup[num] = 1;
list.Add(num);
}
else if (lookup[num]++ < N)
{
list.Add(num);
}
}
int[]intArray={1,2,3,4,1,1,2,3};
int N=2;
var lookup=newdictionary();
列表=新列表();
foreach(intArray中的int num)
{
如果(!lookup.ContainsKey(num))
{
查找[num]=1;
列表。添加(num);
}
else if(查找[num]+
我建议使用字典
来计算出场次数:
private static IEnumerable<T> RepeatOnly<T>(IEnumerable<T> source, int times) {
Dictionary<T, int> counts = new Dictionary<T, int>();
foreach (var item in source) {
int count;
if (counts.TryGetValue(item, out count))
counts[item] = ++count;
else
counts.Add(item, count = 1);
if (count <= times)
yield return item;
}
}
我不会问你是怎么在不到5分钟的时间里做到这一点的,但这是可行的。非常感谢。很乐意帮忙!:)
int[] source = new int[] { 1, 2, 3, 4, 1, 1, 2, 3 };
int[] result = RepeatOnly(source, 2).ToArray();
Console.Write(string.Join(Environment.NewLine, result));