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

JavaScript에서 두 개 이상의 요소가 있는 하위 배열 합계

<시간/>

문제

첫 번째 인수로 정수 배열 arr을, 두 번째 및 첫 번째 인수로 단일 정수 target을 취하는 JavaScript 함수를 작성해야 합니다. 우리 함수는 합이 k의 배수, 즉 합이 n*k가 되는 크기가 최소 2인 연속 하위 배열이 있는지 확인해야 합니다. 여기서 n은 임의의 정수일 수 있습니다.

존재하는 경우 true를 반환하고 그렇지 않은 경우 false를 반환합니다.

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

인 경우
const arr = [23, 2, 6, 4, 7];
const target = 6;

그러면 출력은 다음과 같아야 합니다. -

const output = true;

출력 설명:

[23, 2, 6, 4, 7]은 크기가 5이고 합이 최대 42인 연속 하위 배열이기 때문입니다.

예시

이에 대한 코드는 -

const arr = [23, 2, 6, 4, 7];
const target = 6;
const checkSubarraySum = (arr = [], target = 1) => {
   let sum = 0
   const hash = {}
   hash[0] = -1;
   for (let i = 0; i<arr.length; i++) {
      sum += arr[i]
      if (target!=0) sum %= target
      if ( hash[sum] !== undefined ) {
         if(i-hash[sum]>1) return true
      } else {
         hash[sum] = i
      }
   };
   return false;
};
console.log(checkSubarraySum(arr, target));

출력

콘솔의 출력은 -

true