Giả sử chúng ta có một danh sách num và một giá trị khác k, chúng ta phải tìm các giá trị lớn nhất của mỗi danh sách con có kích thước k.
Vì vậy, nếu đầu vào là nums =[12, 7, 3, 9, 10, 9] k =3, thì đầu ra sẽ là [12, 9, 10, 10]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
nếu k> kích thước của nums, thì
-
trả lại một danh sách trống
-
-
res:=một danh sách mới
-
tạm thời:=nums [0]
-
temp:=npoint:=0
-
đối với tôi trong phạm vi từ 0 đến k - 1, thực hiện
-
if nums [i]> temp, then
-
tạm thời:=nums [i]
-
point:=i
-
-
-
chèn nhiệt độ vào cuối res
-
đối với tôi trong phạm vi từ k đến kích thước của nums, thực hiện
-
nếu nums [i]
-
temp:=nums [point]
-
-
ngược lại khi nums [i]
=k thì -
điểm:=i - k + 1
-
đối với j trong phạm vi i - k + 1 đến i, thực hiện
-
nếu nums [j]> nums [point], thì
-
point:=j
-
-
-
temp:=nums [point]
-
-
nếu không,
-
tạm thời:=nums [i]
-
point:=i
-
-
chèn nhiệt độ vào cuối res
-
-
trả lại res
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
[12, 7, 3, 9, 10, 9], 3
Đầu ra
[12, 9, 10, 10]