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