빌드업
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 ] }