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

โปรแกรมค้นหาดัชนีที่มีองค์ประกอบด้านซ้ายและขวาเท่ากันในPython


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