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

โปรแกรมค้นหาความแตกต่างขั้นต่ำระหว่างค่าที่ใหญ่ที่สุดและน้อยที่สุดในสามการเคลื่อนไหวโดยใช้Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums เราสามารถเปลี่ยนหนึ่งองค์ประกอบจากอาร์เรย์นี้เป็นค่าใดก็ได้ในการย้ายครั้งเดียว เราต้องหาค่าความแตกต่างขั้นต่ำระหว่างค่า nums ที่ใหญ่ที่สุดและน้อยที่สุดหลังจาก preforming ไม่เกิน 3 การเคลื่อนไหว

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,7,2,12,16] ผลลัพธ์จะเป็น 1 เพราะเราสามารถกำหนดให้อาร์เรย์ที่กำหนดเป็น [1,1,0,1,1] ค่าสูงสุดคือ 1 และค่าต่ำสุดคือ 0 ดังนั้นผลต่างคือ 1

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

  • ถ้าขนาดของ nums <=4 แล้ว

    • คืนค่า 0

  • เรียงเลขรายการ

  • ตอบ :=อนันต์

  • สำหรับผมอยู่ในช่วง 0 ถึง 3 ทำ

    • mi :=nums[i]

    • ma :=nums[length of nums -(3-i+1)]

    • ans :=ขั้นต่ำของ ma-mi และ ans

  • กลับมาอีกครั้ง

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

ตัวอย่าง

def solve(nums):
   if len(nums) <= 4:
      return 0
   nums.sort()
   ans = float("inf")
   for i in range(4):
      mi = nums[i]
      ma = nums[-(3-i+1)]
      ans = min(ma-mi,ans)
   return ans
nums = [3,7,2,12,16]
print(solve(nums))

อินพุต

[3,7,2,12,16]

ผลลัพธ์

1