Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm chỉ mục có tổng phần tử bên trái và bên phải bằng nhau trong Python

Giả sử chúng ta có một danh sách các mục gọi là nums, chúng ta phải tìm chỉ số i nhỏ nhất sao cho tổng các số ở bên trái của i bằng tổng các số ở bên phải của i. Nếu chúng tôi không thể tìm thấy bất kỳ giải pháp nào như vậy, hãy trả về -1.

Vì vậy, nếu đầu vào giống như nums =[8,2,3,6,5,2,5,9,1,2], thì đầu ra sẽ là 4, bởi vì tổng các phần tử nằm bên trái của chỉ số 4 là [ 8,2,3,6] =19 và tổng các phần tử có ở bên phải cũng là [2,5,9,1,2] =19.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • r:=tổng của tất cả các phần tử có trong nums

  • l:=0

  • đối với mỗi chỉ số i và giá trị x tính bằng nums, thực hiện

    • r:=r - x

    • nếu r giống với l thì

      • trả lại tôi

    • l:=l + x

  • trả về -1

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn

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))

Đầu vào

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

Đầu ra

4