[高分求算法] 如何计算出集合中最多的重复的数字的重复次数

macenjie 2010-05-17 10:03:26
比如我有一个已排序的集合 List

集合内容如下 {1,1,2,3,4,4,4,5,6,6,7,7,7,7,7,8,8,9}

其中 1 有 2 个, 2 有 1 个, 3 有 1 个, 4 有 3个, 而 7 却有 5 个。

我想写一个函数,针对这个例子,输出就是 5。

有点像 SQL 的 GROUP BY ,然后取下 MAX

请问该函数的算法该如何写?100分相送,谢谢大家啦!

P.S.
该算法的用途是计算某个论坛上所有帖子的最后回复时间的并发数。
比如在最高峰的时间,有 10 个人在 20:30 分回复。那么函数输出为 10
...全文
191 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-05-17
  • 打赏
  • 举报
回复
static int DistinctCount<T>(IList<T> i)
{
return i.Distinct<T>().Count();
}
遍历Contains
mngzilin 2010-05-17
  • 打赏
  • 举报
回复
linq
List<int> list = new List<int>() { 1, 1, 2, 3, 4, 4, 4, 5, 6, 6, 7, 7, 7, 7, 7, 8, 8, 9 };
var max = (from l in list group l by l into coll select coll.Count()).Max();
HarveyYan 2010-05-17
  • 打赏
  • 举报
回复


int[] arr = new int[18] { 1, 1, 2, 3, 4, 4, 4, 5, 6, 6, 7, 7, 7, 7, 7, 8, 8, 9,};
var i = arr.GroupBy(a => a).Max(b => b.Count());

jianshao810 2010-05-17
  • 打赏
  • 举报
回复
做产品不是做作业,做产品要考虑基本的效率。统计是预先做好的,而不是临时查询出来的。
严重同意。。
不过,用 linq 也可以,简单
yalan 2010-05-17
  • 打赏
  • 举报
回复
PS:感觉和冒泡排序差不多呵呵,可以先sort这个字符串,然后按逗号分隔字符串,然后比较字符串,例如:zifuchuan[1]=zifuchuan[2]那么相加这两个字符串并且计数,以此类推,知道所有的相等的字符串相加并统计处这些相同值的和,最后输出一个最大数对应的值就行了

如果是ASP我马上就能下下来,可现在刚学c#对代码不熟悉,我认为就是这个思路不会错的,当然如果有更好的算法除外
noway8881 2010-05-17
  • 打赏
  • 举报
回复
应该是一句LINQ就出来了,但是俺不会写。
  • 打赏
  • 举报
回复
做产品不是做作业,做产品要考虑基本的效率。统计是预先做好的,而不是临时查询出来的。
永生天地 2010-05-17
  • 打赏
  • 举报
回复
写循环,没什么好说的
macenjie 2010-05-17
  • 打赏
  • 举报
回复
注意,集合是 C# 中的集合类型变量
不是 SQL 数据库,如果是数据库则好办多了,用下 Group By 问题就解决了。
另外,集合是已经根据从小到大排序后的。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧