[리트코드] 238. Product of Array Except Self




238. Product of Array Except Self

리트코드

나의 풀이

var productExceptSelf = function (nums) {
  const multi = nums.reduce((acc, cur) => acc * cur, 1);
  return nums.map(v => multi / v);
};


사실 이 방법이 제일 간단하지만 문제 조건으로 나누기 연산자를 사용하지 말라고 했다.

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number[]}
 */
var productExceptSelf = function (nums) {
  const result = [];
  let left = 1;
  let right = 1;
  for (let i = 0; i < nums.length; i++) {
    result.push(left);
    left *= nums[i];
  }
  for (let i = nums.length - 1; i >= 0; i--) {
    result[i] *= right;
    right *= nums[i];
  }
  return result;
};


left, right를 기준으로 앞/뒤로 한번씩 순회해서 구했다.