สมมติว่าเรามีรายการ nums และอีกค่าหนึ่งคือ k เราต้องหาค่าสูงสุดของแต่ละรายการย่อยที่มีขนาด k
ดังนั้น หากอินพุตเป็น nums =[12, 7, 3, 9, 10, 9] k =3 ผลลัพธ์จะเป็น [12, 9, 10, 10]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้า k> ขนาดของ nums แล้ว
-
กลับรายการว่าง
-
-
res :=รายการใหม่
-
อุณหภูมิ :=nums[0]
-
อุณหภูมิ :=npoint :=0
-
สำหรับฉันในช่วง 0 ถึง k − 1 ทำ
-
ถ้า nums[i]> temp แล้ว
-
อุณหภูมิ :=nums[i]
-
จุด :=ผม
-
-
-
ใส่ temp ที่ท้าย res
-
สำหรับฉันในช่วง k ถึงขนาดของ nums ทำ
-
ถ้า nums[i]
-
อุณหภูมิ :=nums[point]
-
-
มิฉะนั้นเมื่อ nums[i]
=k แล้ว -
จุด :=ผม − k + 1
-
สำหรับ j ในช่วง i − k + 1 ถึง i ทำ
-
ถ้า nums[j]> nums[point] แล้ว
-
จุด :=เจ
-
-
-
อุณหภูมิ :=nums[point]
-
-
มิฉะนั้น
-
อุณหภูมิ :=nums[i]
-
จุด :=ผม
-
-
ใส่ temp ที่ท้าย res
-
-
ผลตอบแทน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums, k): if k > len(nums): return [] res = [] temp = nums[0] point = 0 for i in range(k): if nums[i] > temp: temp = nums[i] point = i res.append(temp) for i in range(k, len(nums)): if nums[i] < temp and (i − point) < k: temp = nums[point] elif nums[i] < temp and (i − point) >= k: point = i − k + 1 for j in range(i − k + 1, i + 1): if nums[j] > nums[point]: point = j temp = nums[point] else: temp = nums[i] point = i res.append(temp) return res ob = Solution() nums = [12, 7, 3, 9, 10, 9] k = 3 print(ob.solve(nums, k))
อินพุต
[12, 7, 3, 9, 10, 9], 3
ผลลัพธ์
[12, 9, 10, 10]