1 /// <summary>
2 /// Solution
3 /// 100/100
4 /// </summary>
5 /// <param name="A"></param>
6 /// <returns></returns>
7 public int solution(int[] A)
8 {
9 HashSet<int> peakIds = new HashSet<int>();
10
11 for (int i = 1; i < A.Length - 1; i++)
12 if (A[i] > A[i - 1] && A[i] > A[i + 1])
13 peakIds.Add(i);
14
15 for (int size = 2; size <= A.Length; size++)
16 {
17 if (A.Length % size == 0)
18 {
19 int groups = A.Length / size;
20 int flag = 0;
21 foreach (int peakId in peakIds)
22 {
23 if (peakId / size > flag)
24 break;
25 if (peakId / size == flag)
26 flag++;
27 }
28 if (flag == groups) return groups;
29 }
30 }
31 return 0;
32 }