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

โปรแกรมค้นหาจำนวนการเพิ่มขึ้นขั้นต่ำในอาร์เรย์ย่อยเพื่อสร้างอาร์เรย์เป้าหมายใน Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่าเป้าหมายที่มีค่าบวก ตอนนี้ให้พิจารณาอาร์เรย์เริ่มต้นที่มีขนาดเท่ากันกับศูนย์ทั้งหมด เราต้องหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นในการสร้างอาร์เรย์เป้าหมายจากค่าเริ่มต้นหากเราดำเนินการนี้:(เลือกอาร์เรย์ย่อยใดก็ได้จากค่าเริ่มต้นและเพิ่มแต่ละค่าทีละหนึ่ง)

ดังนั้น ถ้าอินพุตเหมือนเป้าหมาย =[2,3,4,3,2] ผลลัพธ์จะเป็น 4 เพราะอาร์เรย์เริ่มต้นคือ [0,0,0,0,0] ก่อนส่ง select subarray จากดัชนี 0 ถึง 4 และเพิ่ม 1 ดังนั้นอาร์เรย์จะเป็น [1,1,1,1,1] จากนั้นเลือกจากดัชนี 0 ถึง 4 อีกครั้งเพื่อสร้าง [2,2,2,2,2] จากนั้นเลือกองค์ประกอบจาก ดัชนี 1 ถึง 3 และเพิ่มขึ้น ดังนั้นอาร์เรย์จะเป็น [2,3,3,3,2] และสุดท้ายเลือกดัชนี 2 และสร้างอาร์เรย์ [2,3,4,3,2] ซึ่งเหมือนกับเป้าหมาย

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

  • prev_num :=0

  • ขั้นตอน :=0

  • สำหรับแต่ละ val ในเป้าหมาย ให้ทำ

    • steps :=steps + val - prev_num if val> prev_num มิฉะนั้น 0

    • prev_num :=วาล

  • กลับขั้นตอน

ตัวอย่าง

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

def solve(target):
   prev_num = 0
   steps = 0
   for val in target:
      steps += val-prev_num if val > prev_num else 0
      prev_num = val
   return steps

target = [2,3,4,3,2]
print(solve(target))

อินพุต

[2,3,4,3,2]

ผลลัพธ์

4