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 }