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

โปรแกรมหาความต่างน้อยที่สุดระหว่าง max และ min หลังอัปเดตสูงสุด 3 ครั้งใน Python

สมมติว่าเรามีรายการ nums มีการดำเนินการเปลี่ยนค่าสมาชิกเป็นค่าใดก็ได้ สูงสุด 3 ครั้ง หาความต่างน้อยที่สุดระหว่างค่าสูงสุดและต่ำสุดหลังอัปเดต

ตัวอย่าง: nums = [2, 3, 4, 5, 6, 7] ผลลัพธ์ 2 (เปลี่ยนเป็น [4, 3, 4, 5, 4, 4] แล้ว 5-3=2)

ขั้นตอนการแก้ปัญหา

  1. ถ้า len(nums) <= 4 คืนค่า 0 (เปลี่ยนทุกตัวให้เท่ากันได้)
  2. n = len(nums), เรียง nums
  3. คืนค่า min(nums[n-4+i] - nums[i] for i in range(4)) (ตรวจสอบ 4 กรณี: ลบ 3 ตัวใหญ่สุด, ลบ 2 ใหญ่ 1 เล็ก, ลบ 1 ใหญ่ 2 เล็ก, ลบ 3 เล็กสุด)

ตัวอย่างโค้ด Python

class Solution:
    def solve(self, nums):
        if len(nums) <= 4:
            return 0
        nums.sort()
        return min(nums[-4 + i] - nums[i] for i in range(4))

ob = Solution()
nums = [2, 3, 4, 5, 6, 7]
print(ob.solve(nums))  # Output: 2

อินพุต / เอาต์พุต

Input: [2, 3, 4, 5, 6, 7]

Output: 2