《剑指Offer》 滑动窗口的最大值
来源:互联网 发布:json解析汉字乱码 编辑:程序博客网 时间:2024/04/28 08:12
题目描述:
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。
思路:
如果size比num的长度大或者size为0直接返回空vector。外循环注意遍历len-size+1次,设置max为当前框的第一个元素,j从下一个元素开始与max比较,如果num[j]比max大,则替换,一次外循环结束,将max放到res里
代码:
class Solution {public: vector<int> maxInWindows(const vector<int>& num, unsigned int size) { vector<int> res;//保存结果的vector, size_t len = num.size();//计算num的长度 if (size > len||size==0){//如果size比num的长度大或者size为0直接返回空vector return res; } for (size_t i = 0; i<len-size+1; ++i){//注意遍历len-size+1次 int max = num[i];//设置max为当前框的第一个元素 for (size_t j = i+1; j<i + size; ++j){//j从下一个元素开始与max比较 if (num[j]>max){//如果num[j]比max大,则替换 max = num[j]; } } res.push_back(max);//一次循环结束,将max放到res里 } return res; }};
输出结果: 运行时间: <1 ms 占用内存:8552K 状态:答案正确
0 0
- 剑指offer 65 - 滑动窗口的最大值
- 《剑指offer》滑动窗口的最大值
- 剑指offer—滑动窗口的最大值
- 剑指offer:滑动窗口的最大值
- 剑指offer:滑动窗口的最大值
- [剑指offer]滑动窗口的最大值
- 《剑指offer》:[65]滑动窗口的最大值
- 剑指Offer--065-滑动窗口的最大值
- 剑指offer-滑动窗口的最大值
- 【剑指offer】滑动窗口的最大值
- 《剑指Offer》 滑动窗口的最大值
- 剑指offer-64.滑动窗口的最大值
- 剑指offer-滑动窗口的最大值
- 剑指offer 滑动窗口的最大值
- 剑指offer—滑动窗口的最大值
- 剑指offer — 滑动窗口的最大值
- 剑指offer 滑动窗口的最大值
- 滑动窗口的最大值(STL的应用+剑指offer)
- Mysql无法连接问题
- 小米路由器青春版刷潘多拉、华硕固件
- spark高级数据分析-推荐系统(学习笔记)
- C++第四次实验
- vfio 通过VFIO_DEVICE_GET_REGION_INFO得到io信息,然后mmap到user space使用
- 《剑指Offer》 滑动窗口的最大值
- mybatis批量添加
- Mssql全局临时表--永久存在
- 文章标题
- hive 创建表——指定分隔符
- bitmap转String,string转int ,int转string,byte数组转bitmap
- Ubuntu14.04下安装WebGoat
- 2017大数据版图最新发布,高清无码与趋势分析
- Dilated Convolution