在Python中找到大小为k的子列表的最大值的程序
假设我们有一个列表num和另一个值k,我们必须找到大小为k的每个子列表的最大值。
因此,如果输入如下nums = [12、7、3、9、10、9] k = 3,则输出将为[12、9、10、10]
要解决此问题,我们将遵循以下步骤-
- 如果k> nums的大小,那么
- 返回空列表
- res:=新列表
-
temp:= nums [0]
-
temp:= npoint:=0
-
for i in range 0 to k − 1, do
- 如果nums [i]> temp,则
- temp:= nums [i]
-
point:= i
- 如果nums [i]> temp,则
-
将temp插入res的末尾
-
for i in range k to size of nums, do
- 如果nums [i]
- temp:= nums [point]
- 否则当nums [i] = k时,那么
- point:=i−k + 1
-
for j in range i-k + 1 to i, do
-
如果nums [j]> nums [point],则
- point:= j
- temp:= nums [point]
-
否则,
- temp:= nums [i]
-
point:= i
-
将temp插入res的末尾
- 如果nums [i]
-
返回res
让我们看一下以下实现,以获得更好的了解-
更多Python相关文章,请阅读:Python 教程
示例
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]