C 找出陣列中重複次數最多的數值

2022-02-25 19:08:57 字數 717 閱讀 5858

給定乙個int陣列,裡面存在重複的數值,如何找到重複次數最多的數值呢?

這是在某社群上有人提出的問題,我想到的解決方法是分組。

1、先對陣列中的所有元素進行分組,那麼,重複的數值肯定會被放到一組中;

2、將分組進行排序,排序條件是分組中的元素個數;

3、元素數量最多的那個分組中的數值就是重複次數最多的。

基於以上思路,可以寫出以下**:

// 示例陣列,90重複4次,1重複2次,3重複3次

int arr = ;

/** 先將陣列各元素進行分組,

* 然後將每個組中的元素個數按降序排列

*/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)

",x);

}

在示例陣列中,1出現了兩次,3出現了三次,15出現兩次,90出現四次。顯然,重複次數最多的是90。

使用linq語句將源陣列中的所有元素,按照元素自身進行分組,然後用count方法計算每個組中的元素個數,並按降序排列。得到的結果中的第乙個分組,其裡面的元素自然是重複次數最多的了。

故輸出結果為:

**:

求陣列中重複次數最多的元素

例如 陣列a 元素2 3 7 8各出現1次,1出現兩次,5出現4次,則重複次數最多的元素為5.定義乙個陣列int cnt max 將其元素全部初始化為0。然後遍歷陣列a,執行cnt a i 操作。最後在cnt陣列中找最大的數,對應的數即為重複次數最多的數。示例如下 以空間換時間,索引法 int ma...

求陣列中反覆次數最多的元素

比如 陣列a 元素2 3 7 8各出現1次。1出現兩次。5出現4次,則反覆次數最多的元素為5.定義乙個陣列int cnt max 將其元素所有初始化為0。然後遍歷陣列a。執行cnt a i 操作。最後在cnt陣列中找最大的數。相應的數即為反覆次數最多的數。示比例如以下 以空間換時間,索引法 int ...

java實現列印list中重複次數最多的前n個資料

如 list中有1,3,4,5,1,7,5,3,4,2,1,5,1 當輸入輸入引數n為1時,列印1 當輸入引數n為2時,列印1,5 public void printtopn listnumbers,int n else 將統計出來的map進行處理 map resultmap new hashmap...