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