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

JavaScript에서 대상보다 약간 작은 하위 배열의 곱

<시간/>

문제

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

우리 함수는 하위 배열에 있는 모든 요소의 곱이 목표보다 작은 (인접한) 하위 배열의 수를 계산하고 반환해야 합니다.

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

인 경우

입력

const arr = [10, 5, 2, 6];
const target = 100;

출력

const output = 8;

출력 설명

곱이 100보다 작은 8개의 하위 배열은 -

[10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6].

[10, 5, 2]는 100의 곱이 엄격하게 k보다 작지 않으므로 포함되지 않습니다.

예시

다음은 코드입니다 -

const arr = [10, 5, 2, 6];
const target = 100;
const countSubarrays = (arr = [], target = 1) => {
   let product = 1
   let left = 0
   let count = 0
   for (let right = 0; right < arr.length; right++) {
      product *= arr[right]
      while (left <= right && product >= target) {
         product /= arr[left]
         left += 1
      }
      count += right - left + 1
   }
   return count
};
console.log(countSubarrays(arr, target));

출력

8