ปัญหา
อาร์เรย์ nums ลบสมาชิก 1 ตำแหน่งได้ อาร์เรย์ fair ถ้าผลรวมตำแหน่งคู่ = ผลรวมตำแหน่งคี่ (หลังลบ) หาจำนวนตำแหน่งที่ลบได้เพื่อให้ fair
ตัวอย่าง
nums=[5,3,7,2] → ผลลัพธ์ 1 (ลบ index 1 ได้ [5,7,2] ผลรวมคู่ 5+2=7, คี่ 7 → fair)
ขั้นตอนการแก้ปัญหา
res=0, sm1=0, sm2=0(sm1ผลรวม index คี่,sm2 index คู่ เริ่มจาก 1)- คำนวณ
sm1, sm2สำหรับ i=1..n-1 - ถ้า
sm1 == sm2:res += 1(ลบ index 0) - วน
i1..n-1:- ถ้า
iคี่:sm1 = sm1 - nums[i] + nums[i-1] - มิฉะนั้น:
sm2 = sm2 - nums[i] + nums[i-1] - ถ้า
sm1 == sm2:res += 1
- ถ้า
- คืน
res
การนำไปใช้งาน (Python)
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