Python 中查找大小为 k 的子列表的最大值程序
假设我们有一个列表 nums 和另一个值 k,我们需要找到大小为 k 的每个子列表的最大值。
因此,如果输入类似于 nums = [12, 7, 3, 9, 10, 9] k = 3,则输出将为 [12, 9, 10, 10]
为了解决这个问题,我们将遵循以下步骤:
如果 k > nums 的大小,则
返回一个空列表
res := 一个新列表
temp := nums[0]
temp := npoint := 0
对于 i 从 0 到 k − 1,执行
如果 nums[i] > temp,则
temp := nums[i]
point := i
将 temp 插入 res 的末尾
对于 i 从 k 到 nums 的大小,执行
如果 nums[i] < temp 且 (i − point) < k,则
temp := nums[point]
否则,当 nums[i] < temp 且 (i − point) >= k 时,则
point := i − k + 1
对于 j 从 i − k + 1 到 i,执行
如果 nums[j] > nums[point],则
point := j
temp := nums[point]
否则,
temp := nums[i]
point := i
将 temp 插入 res 的末尾
返回 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]
广告