Python每日一练算法之“滑动窗口的最大值”(列表操作)

问题描述:

给定一个可能包含重复整数的数组和一个大小为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]

猜你喜欢

转载自blog.csdn.net/qq_42642142/article/details/106068939
今日推荐