-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFlags.js
43 lines (33 loc) · 996 Bytes
/
Flags.js
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
//Codility - Flags 100% Score
//Prime and composite numbers
/*
https://app.codility.com/programmers/lessons/10-prime_and_composite_numbers/flags/
*/
function solution(A) {
let peaks = [];
for(let i = 1; i< A.length; i++){
if(A[i] > A[i-1] && A[i] > A[i+1]){
peaks.push(i)
}
}
if(peaks.length < 2){
return peaks.length;
}
const possibleMaxFlagNumber = Math.floor(Math.sqrt(peaks[peaks.length-1] - peaks[0]));
for(let i = possibleMaxFlagNumber + 1; i > 0; i--){
let totalDistance = 0;
let numberOfFlags = 1;
for(let j = 0; j < peaks.length - 1; j++){
const difference = Math.abs(peaks[j + 1] - peaks[j]);
if(difference + totalDist >= i){
numberOfFlags++;
totalDistance = 0;
}else{
totalDistance+= difference;
}
if(numberOfFlags === i){
return i;
}
}
}
}