빌드업
JavaScript에 다음과 같은 배열이 있다고 가정합니다.
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
이 배열의 점을 x축에서 단위 거리만큼 떨어진 각 인접 점이 y축에 표시하면 그래프는 다음과 같이 보일 것입니다. -

이 그래프는 인덱스 3과 7에 각각 값이 7과 4인 두 개의 로컬 최대값(피크)이 있음을 분명히 보여줍니다.
문제
정수 배열 arr을 첫 번째이자 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.
우리의 함수는 최대값과 위치라는 두 가지 속성을 포함하는 객체를 반환해야 합니다.
이 두 속성은 모두 배열이며 최대 배열에는 배열의 localmaximas 값이 포함되고 위치 배열에는 해당 인덱스가 포함됩니다.
예를 들어, 함수에 대한 입력이 -
인 경우따라서 위의 배열의 경우 출력은 다음과 같아야 합니다. -
const output = {
maximas: [7, 4],
positions: [3, 7]
}; 예시
다음은 코드입니다 -
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
const findMaxima = (arr = []) => {
let positions = []
let maximas = []
for (let i = 1; i < arr.length - 1; i++) {
if (arr[i] > arr[i - 1]) {
if (arr[i] > arr[i + 1]) {
positions.push(i)
maximas.push(arr[i])
} else if (arr[i] === arr[i + 1]) {
let temp = i
while (arr[i] === arr[temp]) i++
if (arr[temp] > arr[i]) {
positions.push(temp)
maximas.push(arr[temp])
}
}
}
}
return { maximas, positions };
};
console.log(findMaxima(arr)); 출력
그러면 출력은 다음과 같아야 합니다. -
{ maximas: [ 7, 4 ], positions: [ 3, 7 ] }