สมมติว่าเรามีรายการที่เรียกว่า 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