[leetcode, JS] 238. Product of Array Except Self

mxxn·2023년 9월 13일
0

leetcode

목록 보기
74/198

문제

문제 링크 : Product of Array Except Self

풀이

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var productExceptSelf = function(nums) {
    const multiple = nums.reduce((acc,cur,idx,origin) => {
      if( acc !== 0 && cur !== 0) {
        return acc * cur
      } else {
        return acc === 0 ? cur : acc 
      }
    })
    const isHaveZeros = nums.filter(e => e === 0).length > 1
    const isHasZero = nums.includes(0)
    let result =  []
    nums.forEach( e => {
      if(isHaveZeros) {
        result.push(0)
      } else {
        if(isHasZero && e !== 0){
          result.push(0)
        }else if(isHasZero && e === 0) {
          result.push(multiple)
        } else if(!isHasZero) {
          result.push(multiple/e)
        }

      }
    })

    return result
};
  1. 배열 nums에서 0을 제외한 나머지 값들의 곱셈 값을 구하고
  2. 해당 배열내에 0이 1개인지 2개이상인지 확인하고
  3. nums를 forEach로 순회하면서, nums 배열에 0이 2개이상이라면 0만 push
  4. 1개라면 해당 조건에 맞게 push
  • Runtime 76 ms, Memory 53.1 MB
profile
내일도 글쓰기

0개의 댓글