Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 배열의 중간 인덱스 찾기

<시간/>

문제

1차원 공간에서 다른 소행성의 위치를 ​​나타내는 배열 arr을 받는 JavaScript 함수를 작성해야 합니다.

각 소행성의 절대값은 크기를 나타내고 기호는 방향을 나타냅니다(양수는 오른쪽, 음수는 왼쪽). 각 소행성은 같은 속도로 움직입니다.

우리의 기능은 모든 충돌 후 소행성의 상태를 알아내는 것입니다. 두 개의 소행성이 만나면 작은 소행성이 폭발합니다. 둘 다 크기가 같으면 둘 다 폭발합니다. 같은 방향으로 움직이는 두 개의 소행성은 절대 만나지 않습니다.

예를 들어, 함수에 대한 입력이 -

인 경우

입력

const arr = [1, 7, 3, 6, 5, 6];

출력

const output = 3;

출력 설명

인덱스 3의 왼쪽에 있는 숫자의 합(nums[3] =6)은 인덱스 3의 오른쪽에 있는 숫자의 합과 같습니다.

또한 3은 이것이 발생하는 첫 번째 인덱스입니다.

예시

다음은 코드입니다 -

const arr = [1, 7, 3, 6, 5, 6];
const medianIndex = (arr = []) => {
   let sum = arr.reduce((acc, num) => acc + num, 0)
   let currentSum = 0
   for (let i = 0; i < arr.length; i++) {
      currentSum += (arr[i - 1] || 0)
      sum -= arr[i]
      if (currentSum === sum) {
         return i
      }
   }
   return -1
}
console.log(medianIndex(arr));

출력

3