본 내용은 <파이썬 알고리즘 인터뷰>를 참고했습니다.
왼쪽 곱셈 결과에 오른쪽 값을 차례대로 곱셈
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
out = []
prod = 1
for idx in range(0, len(nums)):
out.append(prod)
prod *= nums[idx]
prod = 1
for idx in range(len(nums)-1, -1, -1):
out[idx] = out[idx]*prod
prod = prod*nums[idx]
return out
이 문제에서 배워야할 포인트
- 나눗셈을 하지 않고 O(n)에 풀이해야 한다
- 풀이 방법은 한 가지 뿐이다. 자기 자신을 제외하고 왼쪽의 곱셈 결과와 오른쪽의 곱셈 결과를 곱해야 한다
- range()의 역순 계산
'프로그래머 > Python' 카테고리의 다른 글
[Python] Leet Code 234. Palindrome Linked List (0) | 2021.03.08 |
---|---|
[Python] Leet Code 121. Best Time to Buy and Sell Stock (0) | 2021.03.06 |
[Python] Leet Code 561. Array Partition I (0) | 2021.02.19 |
[Python] Leet Code 15. 3Sum (0) | 2021.02.19 |
[Python] Leet Code 1. Two Sum (2) | 2021.02.13 |