สมมติว่าเรามีรายการ nums มีการดำเนินการเปลี่ยนค่าสมาชิกเป็นค่าใดก็ได้ สูงสุด 3 ครั้ง หาความต่างน้อยที่สุดระหว่างค่าสูงสุดและต่ำสุดหลังอัปเดต
ตัวอย่าง: nums = [2, 3, 4, 5, 6, 7] ผลลัพธ์ 2 (เปลี่ยนเป็น [4, 3, 4, 5, 4, 4] แล้ว 5-3=2)
ขั้นตอนการแก้ปัญหา
- ถ้า
len(nums) <= 4คืนค่า 0 (เปลี่ยนทุกตัวให้เท่ากันได้) n = len(nums), เรียงnums- คืนค่า
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