zoukankan      html  css  js  c++  java
  • <C#>找出数组中重复次数最多的数值

    给定一个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方法计算每个组中的元素个数,并按降序排列。得到的结果中的第一个分组,其里面的元素自然是重复次数最多的了。

    故输出结果为:

    由于我的人品值有限,只能想出这个较为简单的方法处理,各位观众,要是你有更简便的方法,一定要贴出来,不要“金屋藏娇”。

  • 相关阅读:
    Python服务Dokcer化并k8s部署实例
    Docker Machine
    Docker使用Portainer搭建可视化界面
    三小时攻克 Kubernetes!
    Docker使用pipework配置本地网络
    使用kubeadm安装kubernetes1.12.2版本脚本【h】
    rsync详解之exclude排除文件(转)
    linux生成指定大小的文件(转)
    chown将指定文件的拥有者改为指定的用户或组(转)
    Linux系统分析命令总结
  • 原文地址:https://www.cnblogs.com/tcjiaan/p/4084873.html
Copyright © 2011-2022 走看看