สมมติว่าเรามีรายการที่เรียกว่า 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 :=ผลรวมขององค์ประกอบทั้งหมดที่มีอยู่ใน nums
-
ล :=0
-
สำหรับแต่ละดัชนี i และค่า x เป็น nums ทำ
-
r :=r - x
-
ถ้า r เท่ากับ l แล้ว
-
กลับมา
-
-
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