《剑指Offer》 滑动窗口的最大值
2017-04-10 15:15
253 查看
题目描述:
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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里
代码:
输出结果: 运行时间: <1 ms 占用内存:8552K 状态:答案正确
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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 状态:答案正确
相关文章推荐
- 《剑指Offer》学习笔记--面试题65:滑动窗口的最大值
- 剑指offer-64题 滑动窗口的最大值
- 《剑指offer》:[65]滑动窗口的最大值
- 滑动窗口的最大值(STL的应用+剑指offer)
- 《剑指offer》滑动窗口的最大值
- 剑指Offer——滑动窗口的最大值
- 《剑指offer》-找出数组中所有滑动窗口里数值的最大值
- 剑指offer:滑动窗口的最大值:详细
- 剑指offer——滑动窗口的最大值(好题,数据结构)
- 剑指offer 队列的最大值之 滑动窗口的最大值
- 剑指offer(61)-滑动窗口的最大值
- 剑指offer(66):滑动窗口的最大值
- 剑指offer(59):滑动窗口的最大值(python版)
- 《剑指offer》刷题笔记(栈和队列):滑动窗口的最大值
- 剑指offer——滑动窗口的最大值_(非最佳解)
- 剑指offer——63.滑动窗口的最大值
- 剑指offer——滑动窗口中的最大值
- 剑指offer:滑动窗口的最大值
- 剑指Offer_64_滑动窗口的最大值
- 剑指offer:滑动窗口的最大值