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

โปรแกรมค้นหาวิธีสร้างอาร์เรย์ที่ยุติธรรมใน Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums เราสามารถเลือกดัชนีได้เพียงตัวเดียวและลบองค์ประกอบออกจากดัชนีนั้น (ดัชนีขององค์ประกอบอาจเปลี่ยนแปลงได้หลังจากการถอดออก) เราสามารถพูดได้ว่าอาร์เรย์นั้นยุติธรรมเมื่อผลรวมของค่าดัชนีคี่เท่ากับผลรวมของค่าที่จัดทำดัชนีคู่ เราต้องหาจำนวนดัชนีที่เราสามารถเลือกได้ว่าหลังจากลบแล้ว nums นั้นยุติธรรม

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5,3,7,2] ผลลัพธ์จะเป็น

  • ลบออกจากดัชนี 0, อาร์เรย์คือ [3,7,2] ผลรวมตำแหน่งคู่:3+2 =5 ผลรวมตำแหน่งคี่ 7 (ไม่ยุติธรรม)

  • ลบออกจากดัชนี 1, อาร์เรย์คือ [5,7,2], ผลรวมตำแหน่งคู่:5+2 =7, ผลรวมตำแหน่งคี่ 7 (ยุติธรรม)

  • ลบออกจากดัชนี 2, อาร์เรย์คือ [5,3,2], ผลรวมตำแหน่งคู่:5+2 =7, ผลรวมตำแหน่งคี่ 3 (ไม่ยุติธรรม)

  • ลบออกจากดัชนี 3, อาร์เรย์คือ [5,3,7], ผลรวมตำแหน่งคู่:5+7 =12, ผลรวมตำแหน่งคี่ 3 (ไม่ยุติธรรม)

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • res :=0, sm1 :=0, sm2 :=0
  • สำหรับฉันในช่วง 1 ถึงขนาดของ nums - 1 ทำ
    • ถ้าฉันเป็นคู่ งั้น
      • sm1 :=sm1 + nums[i]
    • มิฉะนั้น
      • sm2 :=sm2 + nums[i]
  • ถ้า sm1 เหมือนกับ sm2 แล้ว
    • res :=res + 1
  • สำหรับฉันในช่วง 1 ถึงขนาดของ nums - 1 ทำ
    • ถ้าฉันแปลก งั้น
      • sm1 :=sm1 - nums[i] + nums[i-1]
    • มิฉะนั้น
      • sm2 :=sm2 - nums[i] + nums[i-1]
    • ถ้า sm1 เหมือนกับ sm2 แล้ว
      • res :=res + 1
  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(nums):
   res, sm1, sm2 = 0, 0, 0
   for i in range(1, len(nums)):
      if i%2 == 1:
         sm1 += nums[i]
      else:
         sm2 += nums[i]
   if sm1 == sm2:
      res += 1

   for i in range(1, len(nums)):
      if i % 2 == 1:
         sm1 = sm1 - nums[i] + nums[i-1]
      else:
         sm2 = sm2 - nums[i] + nums[i-1]
      if sm1 == sm2:
         res += 1

   return res

nums = [5,3,7,2]
print(solve(nums))

อินพุต

[5,3,7,2]

ผลลัพธ์

1