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