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

파이썬에서 현재 인덱스를 제외한 모든 요소의 곱 목록을 찾는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정하고 새로 생성된 목록의 인덱스 i에 있는 각 요소가 인덱스 i에 있는 숫자를 제외한 원래 목록의 모든 숫자의 곱이 되도록 새 목록을 찾아야 합니다. 여기서 나눗셈을 사용하지 않고 풀어야 합니다.

따라서 입력이 nums =[2, 3, 4, 5, 6]과 같으면 출력은 [360, 240, 180, 144, 120]

이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 숫자의 크기가 1보다 작으면
    • 반환 번호
  • l :=숫자 크기
  • left :=크기가 l인 목록이고 처음에는 모든 값이 null입니다.
  • right :=크기가 l인 목록이고 처음에는 모든 값이 null입니다.
  • 온도 :=1
  • 0에서 숫자 크기 범위의 i에 대해
    • i가 0과 같으면
      • 왼쪽[i] :=온도
    • 그렇지 않으면
      • temp :=temp * nums[i - 1]
      • 왼쪽[i] :=온도
  • 온도 :=1
  • 숫자의 범위 크기에 있는 i의 경우 - 1에서 0, 1 감소, do
    • i가 nums - 1의 크기와 같으면
      • 맞음[i] :=온도
    • 그렇지 않으면
      • temp :=temp * nums[i + 1]
      • 맞음[i] :=온도
  • 0에서 숫자 크기 범위의 i에 대해
    • 왼쪽[i] :=왼쪽[i] * 오른쪽[i]
  • 좌회전

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class 솔루션:def solve(self, nums):len(nums) <1:반환 nums l =len(nums) left =[None] * l right =[None] * l temp =1 for i in range(len(nums)):if i ==0:left[i] =temp else:temp =temp * nums[i - 1] left[i] =temp temp =1 for i in range(len(nums) - 1, -1, -1):if i ==len(nums) - 1:right[i] =temp else:temp =temp * nums[i + 1] right[i] =범위 내 i에 대한 온도( len(nums)):왼쪽[i] =왼쪽[i] * 오른쪽[i] return leftob =Solution()nums =[2, 3, 4, 5, 6]print(ob.solve(nums)) 

입력

[2, 3, 4, 5, 6]

출력

[360, 240, 180, 144, 120]