问题描述:
给定一个可能包含重复整数的数组和一个大小为k的滑动窗口,从左到右在数组中滑动这个窗口,找到数组中每个窗口中的最大值。
解释:也就是找到每个窗口中的最大值,加入到一个新的数组中,问题不难,个人觉得意在考察对列表的操作(max()、append()等方法),当然你也可以用自己写的max()、append()。
问题示例:
给出数组[1,2,7,7,8],k=3,输出[7,7,8]
代码实现:
class List_solution:
def find_maxinSliding_window(self,s_list,k):
l = len(s_list)
max_list = []
for i in range(l-k+1):
temp_list = s_list[i:i+k]
m = max(temp_list)
max_list.append(m)
return max_list
if __name__=='__main__':
s_list = []
c = int(input("请输入数组元素个数:"))
while c>0:
num = int(input("输入元素:"))
s_list.append(num)
c -=1
k = int(input("请输入k:"))
sol = List_solution()
maxlist = sol.find_maxinSliding_window(s_list,k)
print(maxlist)
输出:
请输入数组元素个数:6
输入元素:15
输入元素:32
输入元素:41
输入元素:2
输入元素:7
输入元素:84
请输入k:3
[41, 41, 41, 84]
请输入数组元素个数:5
输入元素:1
输入元素:2
输入元素:7
输入元素:7
输入元素:8
请输入k:3
[7, 7, 8]