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

파이썬에서 왼쪽과 오른쪽 요소의 합이 같은 인덱스를 찾는 프로그램

<시간/>

nums라는 항목 목록이 있다고 가정하고 i의 왼쪽에 있는 숫자의 합이 i의 오른쪽에 있는 숫자의 합과 같도록 가장 작은 인덱스 i를 찾아야 합니다. 그러한 솔루션을 찾을 수 없으면 -1을 반환합니다.

따라서 입력이 nums =[8,2,3,6,5,2,5,9,1,2]와 같으면 출력은 4가 됩니다. 왜냐하면 인덱스 4의 왼쪽에 있는 요소의 합은 [ 8,2,3,6] =19이고 오른쪽에 있는 요소의 합은 [2,5,9,1,2] =19이기도 합니다.

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

  • r :=숫자에 있는 모든 요소의 합

  • 내가 :=0

  • 숫자로 된 각 인덱스 i와 값 x에 대해 수행

    • r :=r - x

    • r이 l과 같으면

      • 반환 i

    • l :=l + x

  • 반환 -1

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

def solve(nums):
   r = sum(nums)
   l = 0
   for i,x in enumerate(nums):
      r -= x
      if r == l:
         return i
      l += x
   return -1

nums = [8,2,3,6,5,2,5,9,1,2]
print(solve(nums))

입력

[8,2,3,6,5,2,5,9,1,2]

출력

4