找出數組中重復次數最多的數值


給定一個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方法計算每個組中的元素個數,並按降序排列。得到的結果中的第一個分組,其里面的元素自然是重復次數最多的了。

故輸出結果為:

由於我的人品值有限,只能想出這個較為簡單的方法處理,各位觀眾,要是你有更簡便的方法,一定要貼出來,不要“金屋藏嬌”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM