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

JavaScript에서 선형 시간의 두 합 문제

<시간/>

숫자 배열을 첫 번째 인수로, 목표 합계를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

함수는 목표 합계(있는 경우)를 제공하기 위해 합산되는 배열(연속 또는 비연속)에서 이러한 두 숫자의 인덱스를 찾아서 반환해야 합니다. 조건은 이것을 선형 시간(1회 반복)으로 수행해야 한다는 것입니다.

우리는 지도를 사용하여 반복되는 숫자의 수를 세고, 어느 지점에서든 목표 합계를 제공하는 두 개의 숫자를 만나면 즉시 반환합니다.

예시

이에 대한 코드는 -

const arr = [1, 3, 5, 7, 9, 11];
const target = 16;
const twoSum = function(arr, target) {
   const map = new Map();
   for(let i = 0; i < arr.length; i++) {
      let num = arr[i];
      if(map.get(num) === undefined){
         map.set(target−num, i)
      }else{
         return [map.get(num), i]
      };
   };
};
console.log(twoSum(arr, target));

출력

콘솔의 출력은 -

[3, 4]