题目

  1. 输入:从控制台获取n,m,a,b;其中n*m为矩阵大小,a*b为滑动窗口大小
  2. 矩阵中的值,通过(i*j)mod 10 得到,
  3. 在滑动过程中,需要获得每次滑动窗口中的最大值,并存储下来
  4. 输出:所有最大值的和

要求及思路

  1. 纯暴力求解法,时间复杂度过高,需要使用滑动窗口方法求解
  2. 题目为2维矩阵,所以需要对行和列依次使用滑动窗口方法即可
  3. 不了解滑动窗口的可以参考一维滑动窗口这篇文章

源码

from pip._vendor.distlib.compat import raw_inputclass Solution:#获得输入参数def get_parameters(self):# get the input from consoleinput_array = raw_input().split(" ")n = input_array[0]m = input_array[1]a = input_array[2]b = input_array[3]print(n, m, a, b)return int(n),int(m),int(a),int(b)#构建矩阵def create_matrix(self,n,m):# create the matrixmatrix = []for i in range(int(n)):inner_list = []for j in range(int(m)):ele = (i + 1) * (j + 1) % 10inner_list.append(ele)matrix.append(inner_list)# print(matrix)return matrix#对每行使用滑动窗口获得新的矩阵def getRowMaxWindow(self,matrix,row,col,w):queue=[]result_list=[]for i in range(row):inner_list=[]for j in range(col):while queue and matrix[i][queue[-1]]<=matrix[i][j]:queue.pop(-1)queue.append(j)if queue[0]==j-w:queue.pop(0)if j>=w-1:inner_list.append(matrix[i][queue[0]])result_list.append(inner_list)return result_list#在每行使用滑动窗口后获得的矩阵基础上,对每列使用滑动窗口def getColMaxWindow(self,matrix,row,col,w):queue=[]result_list=[]for j in range(col):inner_list=[]for i in range(row):while queue and matrix[queue[-1]][j]<=matrix[i][j]:queue.pop(-1)queue.append(i)if queue[0]==i-w:queue.pop(0)if i>=w-1:inner_list.append(matrix[queue[0]][j])result_list.append(inner_list)return result_list#对矩阵求和def getSum(self,matrix,row,col):sum=0for i in range(row):for j in range(col):sum+=matrix[i][j]return sumif __name__=="__main__":so=Solution()n,m,a,b=so.get_parameters()matrix=so.create_matrix(n,m)print(matrix)res_matrix=so.getRowMaxWindow(matrix,n,m,b)print(res_matrix)res_matrix2=so.getColMaxWindow(res_matrix,n,m-b+1,a)print(res_matrix2)#行列反了,因为getCol返回的matrix是行列反的sum=so.getSum(res_matrix2,m-b+1,n-a+1)print(sum)

笔试题——max pooling滑动窗口实现(python 代码)相关推荐

  1. 【重点】剑指offer——面试题65:滑动窗口的最大值

    剑指offer--面试题65:滑动窗口的最大值 Solution1: 笨蛋方法啊.. class Solution { public:vector<int> maxInWindows(co ...

  2. 【算法3】---滑动窗口(python)

    目录 算法3 --- 滑动窗口(python) :mega: `前言:` :sun_with_face: `基本思想:` :closed_book: `代码示例:` :triangular_flag_ ...

  3. LeetCode 438. Find All Anagrams in a String--字符串-滑动窗口--C++,Python解法

    题目地址:Find All Anagrams in a String - LeetCode Given a string s and a non-empty string p, find all th ...

  4. 面试题59 - I. 滑动窗口的最大值/239. 滑动窗口最大值

    2020-05-11 1.题目描述 滑动窗口的最大值 2.题解 使用双端队列维护一个递减的队列 3.代码 class Solution { public:vector<int> maxSl ...

  5. python笔试题奥特曼打怪兽_一个python面试笔试题

    init 和 new 的作用和返回值?详细描述一下类的创建过程?如何捕获类的属性定义顺序? __new__在创建实例对象的时候调用,返回实例对象的内存地址,传递给__init__方法,就是self的值 ...

  6. 自动驾驶算法岗笔试题 | 一道有意思的数学题 | 解析及代码实现

    文章目录 参考资料 1. 题目描述 2. 问题分析 1. 问题 1 分析 python代码实现 2. 问题 2-1 3. 问题 2-2 参考资料 https://max.book118.com/htm ...

  7. 小米实习生笔试题风口的猪-中国牛市Java代码

    本文地址:http://blog.csdn.net/shanglianlm/article/details/77839691 题目描述 风口之下,猪都能飞.当今中国股市牛市,真可谓"错过等七 ...

  8. Python数据结构与算法篇(四)-- 滑动窗口算法

    数组和链表代表着计算机最基本的两种存储形式:顺序存储和链式存储,所以他俩可以算是最基本的数据结构.数组是一种基础数据结构,可以用来处理常见的排序和二分搜索问题,典型的处理技巧包括双指针.滑动窗口等,数 ...

  9. python数据分析笔试题_数据分析岗Python笔试题

    我整理了数据分析师岗的Python笔试题,主要涉及到用Python完成数据处理和分析的内容.自己做了一遍,供大家学习思考. 一.数据处理题 1.将Excel工作簿 "Test.xlsx&qu ...

最新文章

  1. 使用Java VisualVM监控远程JVM
  2. 《TensorFlow技术解析与实战》——导读
  3. java反射 用处_浅谈Java反射
  4. 【数理知识】《积分变换与场论》王振老师-第3章-矢量与矢量空间
  5. a5d27 第1级bootloader启动问题
  6. HtmlAgilityPack/xpath
  7. Windows启动管理器
  8. html 签到日历,写一个签到日历
  9. ...为他们的产品痴迷,不是有兴趣,不是了解,而是痴迷
  10. linux mc 命令,linux的mc命令是什么有什么用
  11. html静态页面如何复用,一种前端页面模板复用的方法与流程
  12. 计算机基础(01)基础知识
  13. win7删除桌面计算机图标怎么删除,Windows7电脑桌面ie图标怎么删除不了?
  14. 数据库建模 : 概念模型 , 逻辑模型和物理模型
  15. 一位百度AI工程师的求职经历(offer/面经/干货/感悟)
  16. 王牌投手·MLB棒球创造营
  17. 写字机结构---coreXY结构
  18. iPhone12、iPhone12 Pro、iPhone12 Max、iPhone12 Pro Max是双卡双待吗
  19. 学习时间管理,让程序猿一生过得更加自由
  20. 云计算中的网络基础知识

热门文章

  1. 31页PPT概述:图神经网络表达能力有多强?
  2. 汇集82万开发者,拿下7项世界冠军的科大讯飞有何魅力?
  3. AI一分钟 | 马斯克再放豪言:我要造的AI的芯片“全球最棒”;刚上路就被叫停,可能是美国对快递机器人最严厉的打击
  4. Kafka 原理以及分区分配策略剖析
  5. Spring Boot + Vue 如此强大?
  6. redisTemplate分布式锁演变、redission分布式锁实现!
  7. 通用的底层埋点都是怎么做的?
  8. Guava 中的 Stopwatch 是个什么鬼?
  9. 别在 Java 代码里乱打日志了,这才是正确的日志打印姿势!
  10. Spring Cloud Alibba教程:如何使用Nacos作为配置中心