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