สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums และค่าจำกัดและเป้าหมายสองค่า อาร์เรย์มีความพิเศษเพราะ |nums[i]| <=จำกัด สำหรับ i ทั้งหมดตั้งแต่ 0 ถึงขนาดของอาร์เรย์ - 1 เราต้องหาจำนวนองค์ประกอบขั้นต่ำที่จะแทรกเพื่อให้ผลรวมของอาร์เรย์เหมือนกับเป้าหมาย องค์ประกอบอาร์เรย์ไม่ควรเกินค่าจำกัด
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[2,-2,2], limit =3, goal =-4, ผลลัพธ์จะเป็น 2 เพราะเราสามารถบวกสอง (-3)s ได้ ดังนั้นอาร์เรย์จะเป็น [2,-2,2,-3,-3]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
s :=ผลรวมขององค์ประกอบทั้งหมดที่มีอยู่ใน nums
-
ab :=|เป้าหมาย - s|
-
คืนเพดานของ (ab / จำกัด)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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