1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 |
class
Program { static
void Main( string [] args) { int [] input = { 1, 1, 1, 2, 2, 5, 2, 4, 9, 9, 20 }; IDuplicationFinder dup1 = new
Duplication1(); string
str1 = dup1.FindDuplication(input, 3); Console.WriteLine(str1); IDuplicationFinder dup2 = new
Duplication2(); string
str2 = dup2.FindDuplication(input, 3); Console.WriteLine(str2); Console.Read(); } } class
Duplication1 : IDuplicationFinder { public
string FindDuplication( int [] input, uint
minTimes) { Dictionary< int , int > valuedic = new
Dictionary< int , int >(); #region 整个完全遍历 //foreach (var v in input) //{ // var numtimes = input.Where(m => m == v).Count(); // if (numtimes >= minTimes && !valuedic.Keys.Contains(v)) // valuedic.Add(v, numtimes); //} #endregion #region linq group var
groupnum = input.GroupBy(m => m); foreach
( var
g in
groupnum) { if
(g.Count() >= minTimes) valuedic.Add(g.Key, g.Count()); } #endregion return
GetValue(valuedic); } private
static string GetValue(Dictionary< int , int > valuedic) { StringBuilder sb = new
StringBuilder(); foreach
( var
d in
valuedic) { sb.AppendFormat( "{0}出现了{1}次" , d.Key, d.Value); sb.AppendLine(); } return
sb.ToString(); } } class
Duplication2 : IDuplicationFinder { public
string FindDuplication( int [] input, uint
minTimes) { List< int > result = new
List< int >(); Array.Sort(input); if
(minTimes == 1) //如果次数是1,就要把去重显示 { if
(input[0] == input[1]) result.Add(input[1]); for
( int
i = 1; i < input.Length - 1; i++) { if
(input[i] != input[i + 1]) result.Add(input[i + 1]); } } else { int
count = 1; //排序后 前一个跟后一个对比,所以从1开始 for
( int
i = 0; i < input.Length - 1; i++) { if
(result.Count > 0 && result.Last() == input[i]) continue ; if
(input[i] == input[i + 1]) { count++; if
(count >= minTimes) { result.Add(input[i]); count = 1; } } } } return
string .Join( "," , result); } } interface
IDuplicationFinder { string
FindDuplication( int [] input, uint
minTimes); } |
数组中所有重复次数大于等于minTimes的数字,布布扣,bubuko.com
原文:http://www.cnblogs.com/smailxiaobai/p/3675550.html