n> 1인 n 정수의 nums라는 배열이 있다고 가정합니다. output[i]가 nums[i]를 제외한 nums의 모든 요소의 곱과 같도록 배열 출력을 찾아야 합니다. 따라서 입력 배열이 [1,2,3,4]이면 출력은 [24,12,8,6]이 됩니다. 나눗셈 연산자를 사용하지 않고 해결해야 합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- right_mul :=num과 같은 크기의 배열, 0으로 채움
- right_mul의 마지막 요소 =nums의 마지막 요소
- 1에서 nums 길이까지의 i에 대해
- right_mul[숫자의 길이 – i – 1] =right_mul[숫자의 길이 – i]* nums[숫자의 길이 – i – 1]
- 출력 :=숫자와 같은 크기의 배열, 0으로 채움
- 접두사:=1, 색인:=0
- while index <출력 길이 – 1
- 출력[인덱스] :=접두어 * right_mul[인덱스 + 1]
- 접두사 :=접두사 * 숫자[색인]
- 인덱스 :=인덱스 + 1
- 출력의 마지막 요소:=접두사
- 반환 출력
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution(object): def productExceptSelf(self, nums): right_multiply = [0] * len(nums) right_multiply[-1]=nums[-1] for i in range(1,len(nums)): right_multiply[len(nums)-i-1] = right_multiply[len(nums)-i] * nums[len(nums)-i-1] output = [0]*len(nums) prefix = 1 current_index = 0 while current_index < len(output)-1: output[current_index] = prefix * right_multiply[current_index+1] prefix *= nums[current_index] current_index +=1 output[-1] = prefix return output ob1 = Solution() print(ob1.productExceptSelf([1,3,5,7,9]))
입력
[1,3,5,7,9]
출력
[945, 315, 189, 135, 105]