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

โปรแกรมหารายการขนาด K ที่ความต่างระหว่างค่าสูงสุดและต่ำสุดน้อยที่สุดใน Python

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

ตัวอย่างเช่น หาก nums = [3, 11, 6, 2, 9], k = 3 ผลลัพธ์คือ 4 จากรายการ [2, 3, 6]

ขั้นตอนการแก้ปัญหา (Sorting + Sliding Window)

  1. เรียงลำดับ nums
  2. สร้างรายการ ls เก็บความต่าง
  3. วนลูป i จาก 0 ถึง len(nums) - k:
    • ls.append(nums[i + k - 1] - nums[i])
  4. คืนค่า min(ls)

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

class Solution:
    def solve(self, nums, k):
        nums.sort()
        ls = []
        
        for i in range(len(nums) - k + 1):
            ls.append(nums[i + k - 1] - nums[i])
        
        return min(ls)

ob = Solution()
nums = [3, 11, 6, 2, 9]
k = 3
print(ob.solve(nums, k))  # Output: 4

อินพุต

[3, 11, 6, 2, 9], 3

เอาต์พุต

4