[Python] Leetcode 238. 자신을 제외한 배열의 곱
Leetcode 238 Product of Array Except Self
문제
배열을 입력받아 output[i]가 자신을 제외한 나머지 모든 요소의 곱셈 결과가 되도록 출력하라
입력
nums = [1,2,3,4]
출력
[24,12,8,6]
풀이
- 왼쪽부터 차례대로 곱한 값을 out 리스트에 저장
- 시간 복잡도 : O(N)
- 공간 복잡도 : O(N)
- 다시 오른쪽부터 역순으로 곱한 값을 앞에서 구한 왼쪽부터 차례대로 곱한 값과 곱한다.
- 시간 복잡도 : O(N)
- 공간 복잡도 : O(N)
def productExceptSelf(self, nums: List[int]) -> List[int]:
out = []
p = 1
# 왼쪽 곱셈
for i in range(0, len(nums)):
out.append(p)
p = p * nums[i]
# out : [1,1,2,6]
# 왼쪽 곱셈 결과에 오른쪽 값을 차례대로 곱셈
p = 1
for i in range(len(nums)-1,-1,-1): # 3,2,1,0
out[i] = out[i]*p
p = p*nums[i]
return out