Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 자기를 제외한 배열의 곱

<시간/>

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]