|
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