gpt4 book ai didi

C# - 特定 int 值在数组中出现了多少次?没有 Linq 技术

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:38 26 4
gpt4 key购买 nike

在 SO 上看到了很多答案,但找不到合适的。

我需要一种高效的算法或 C# 中的方法来计算特定 int 值在数组中出现的次数没有 Linq。数组大小>=100且每个元素不大于100

有这段代码:

    for (int i = 0; i < 100; i++)   // get each number for counting
{
counter = 0; // zero counter for next number comparison

for (int a = 0; a < array.Length; i++)
{
if (i == array[a])
{
counter++;
if (max < counter) max = counter; // save max-appeared num
}
}
}

它在测试挑战中将我显示为结果消息“因超时而终止”。我想这段代码需要很多时间才能解决。有什么替代方案吗?

最佳答案

你可以利用

each element is not greater than 100

并将所有频率声明为数组(必须仅包含101 项:[0..100]):

int[] freqs = new int[101];

foreach (var item in array)
freqs[item] += 1;

输出:

for (int i = 0; i < freqs.Length; ++i)
Console.WriteLine("Number {0} appears {1} times", i, freqs[i]);

在一般情况下,对于任意大项目,您必须处理字典:

Dictionary<int, int> freqs = new Dictionary<int, int>();

foreach (var item in array) {
int v;

if (freqs.TryGetValue(item, out v))
freqs[item] = v + 1;
else
freqs.Add(1);
}

输出(未排序):

foreach (var pair in freqs)
Console.WriteLine("Number {0} appears {1} times", pair.Key, pair.Value);

关于C# - 特定 int 值在数组中出现了多少次?没有 Linq 技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42885540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com