Peaks【★★★】

 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         }

 

posted @ 2015-07-26 01:35  叫我霍啊啊啊  阅读(182)  评论(0编辑  收藏  举报