2013-04-11 60 views
-6

我有6个数字在数组中。我想在数组中统计唯一值以及值吗?

string[] list = { "1", "1", "2","2","1","3" }; 

我想要这样的结果。请帮忙。

“1”= 3
“2”= 2
“3”= 1

+1

-1 just google it – tnw 2013-04-11 13:15:33

+0

在列表中循环并计算所需的字母。这是最简单也是最自然的方式。 – 2013-04-11 13:23:38

回答

3
var itemCounts = list.GroupBy(l => l) 
        .Select(g => new { key = g.Key, count = g.Count()}); 
+0

不错,我有同样的解决方案,但你更快:) – 2013-04-11 13:22:19

+0

谢谢先生,请现在我的一个巨大的帮助,如果我想从itemCounts第一次1最大(计数)以及关键如何得到请。 – Saqi 2013-04-11 13:29:32

+1

'var topItem = itemCounts.OrderByDescending(m => m.count).Take(1);' – paul 2013-04-11 13:31:24

1

假设在SearchArray> 0的数字。这是一种替代方法

您也可以编写一个函数 1)找到最大 - 单圈

for(int i=0;i<searchArray.length;i++){ 
    if (searchArray[i]>max) max=searchArray[i]; 
    } 

2)初始化一个Array[Max+1]= 0

3)环通的每个项目和增量的大小Array

for(int i=0;i<searchArray.length;i++){ 

    Array[searchArray[i]]++; 
    } 
+0

为什么会使用这个'O(n * n)'算法,而Linq更短和** **更快** – I4V 2013-04-11 13:24:02

+1

I4V,你真的明白Linq是如何工作的吗?我不认为使用循环更慢。循环始终是与处理列表和IEnumerable相关的所有内容的基础。 – 2013-04-11 13:25:39

+0

@ I4V我认为这不是N^2这是N + N对2N所以在大O表示法这N顺序是正确的吗? – dekdev 2013-04-11 13:25:40