Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหา Index ที่ผลรวมซ้ายและขวาเท่ากันใน Python

ให้ลิสต์ nums หา Index i น้อยที่สุด ที่ผลรวมซ้าย = ผลรวมขวา (ไม่รวมตัวเอง) ไม่มี → -1

ตัวอย่าง: nums=[8,2,3,6,5,2,5,9,1,2] → 4 (ซ้าย: 8+2+3+6=19, ขวา: 2+5+9+1+2=19)

ขั้นตอน (One Pass O(n))

  1. r = sum(nums), l = 0
  2. วน i, x ใน nums:
    • r -= x
    • ถ้า r == l: คืน i
    • l += x
  3. คืน -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))  # Output: 4

อินพุต

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

เอาต์พุต

4