สมมติว่าเรามีอาร์เรย์ชื่อ nums และสองค่า limit และ goal อาร์เรย์นี้พิเศษเพราะ |nums[i]| <= limit สำหรับทุก i จาก 0 ถึงขนาดอาร์เรย์ - 1 เราต้องหาจำนวนองค์ประกอบขั้นต่ำที่ต้องแทรกเพื่อให้ผลรวมของอาร์เรย์เท่ากับ goal องค์ประกอบอาร์เรย์ไม่ควรเกินค่า limit
เช่น ถ้าอินพุตคือ nums = [2,-2,2], limit = 3, goal = -4 ผลลัพธ์จะเป็น 2 เพราะเราสามารถเพิ่ม (-3) สองตัว ทำให้อาร์เรย์กลายเป็น [2,-2,2,-3,-3]
วิธีแก้ปัญหา
- s := ผลรวมของทุกองค์ประกอบใน nums
- ab := |goal - s|
- return ค่า ceiling ของ (ab / limit)
ตัวอย่าง
from math import ceil
def solve(nums, limit, goal):
s = sum(nums)
ab = abs(goal - s)
return ceil(ab / limit)
nums = [2,-2,2]
limit = 3
goal = -4
print(solve(nums, limit, goal))
อินพุต
[2,-2,2], 3, -4
เอาต์พุต
2.0