码迷,mamicode.com
首页 > 编程语言 > 详细

C# 找出数组中重复次数最多的数值

时间:2017-04-17 11:53:20      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:素数   http   gif   png   解决   基于   方法   社区   www   

给定一个int数组,里面存在重复的数值,如何找到重复次数最多的数值呢?

这是在某社区上有人提出的问题,我想到的解决方法是分组。

1、先对数组中的所有元素进行分组,那么,重复的数值肯定会被放到一组中;

2、将分组进行排序,排序条件是分组中的元素个数;

3、元素数量最多的那个分组中的数值就是重复次数最多的。

 

基于以上思路,可以写出以下代码:

技术分享
            // 示例数组,90重复4次,1重复2次,3重复3次
            int[] arr = { 1, 1, 3, 3, 3, 7, 50, 15, 15, 90, 90, 90, 90, 105 };
            
            /*
             * 先将数组各元素进行分组,
             * 然后将每个组中的元素个数按降序排列
             */
            var res = from n in arr
                      group n by n into g
                      orderby g.Count() descending
                      select g;
            // 分组中第一个组就是重复最多的
            var gr = res.First();
            foreach (int x in gr)
            {
                Console.Write(" {0}",x);
            }
技术分享

在示例数组中,1出现了两次,3出现了三次,15出现两次,90出现四次。显然,重复次数最多的是90。
使用Linq语句将源数组中的所有元素,按照元素自身进行分组,然后用Count方法计算每个组中的元素个数,并按降序排列。得到的结果中的第一个分组,其里面的元素自然是重复次数最多的了。

故输出结果为:

技术分享

转载:http://www.cnblogs.com/tcjiaan/p/4084873.html

C# 找出数组中重复次数最多的数值

标签:素数   http   gif   png   解决   基于   方法   社区   www   

原文地址:http://www.cnblogs.com/louby/p/6721880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!