【发布时间】:2014-09-22 22:44:27
【问题描述】:
正如标题所说,我试图计算一个值在同一个数组中重复出现的次数。因此,例如,如果有一个值为 1、1、2、2 的数组,则输出将类似于: 值 (1) 出现 (2) 次 \n 值 (2) 出现 (2) 次。到目前为止,这是我所拥有的:
foreach (var i in anArray)
{
foreach (var m in secondArray)
{
if (i == m)
{
count++;
}
}
Console.WriteLine("\nValue " + i + " occurred " + count + " times");
}
我创建了第一个数组 (secondArray) 的副本,并试图对数组进行适当的比较,但有些不对劲。嵌套循环计算我的值两次。因此,如果它会说:值 (1) 发生 (2) 次,下一个读数会说:值 (1) 发生 (4) 次,而不是移动到下一个不是 (1) 的值。我意识到它正在计算第二个(1)并将前一个计数添加到它......至少我想我意识到了。我怎样才能只使用数组而不使用列表来解决这个问题?
【问题讨论】:
-
O(n^2) 的复杂度有点不幸。
-
你为什么要做第二个数组?
-
数组中数字的本质是什么。它们可以任意大吗?他们往往很小 - 例如,低于某个小数字?数组中的数字可以是 -ve 吗?阵列可以有多大?可以使用额外的内存来获得答案吗?算法的性能是否值得关注?
标签: c# arrays nested-loops