LintCode之滑动窗口的中位数
来源:互联网 发布:mac终端出现password 编辑:程序博客网 时间:2024/06/07 02:24
描述:给定一个包含 n 个整数的数组,和一个大小为 k 的滑动窗口,从左到右在数组中滑动这个窗口,找到数组中每个窗口内的最大值。(如果数组中有偶数,则在该窗口存储该数字后,返回第 N/2-th 个数字。)
样例:
对于数组 [1,2,7,8,5], 滑动大小 k = 3 的窗口时,返回 [2,7,7]
最初,窗口的数组是这样的:
[ | 1,2,7 | ,8,5] , 返回中位数 2;
接着,窗口继续向前滑动一次。
[1, | 2,7,8 | ,5], 返回中位数 7;
接着,窗口继续向前滑动一次。
[1,2, | 7,8,5 | ], 返回中位数 7;
class Solution {public: /** * @param nums: A list of integers. * @return: The median of the element inside the window at each moving */ vector<int> medianSlidingWindow(vector<int> &nums, int k) { // write your code here vector<int> vec; if(nums.size()<k) return vec; } void Insert(int num){ if(((min.size()+max.size())&0x01)==0)//偶数时 ,放入最小堆 { if(max.size()>0 && num<max[0]) { // push_heap (_First, _Last),要先在容器中加入数据,再调用push_heap () max.push_back(num);//先将元素压入容器 push_heap(max.begin(),max.end(),less<int>());//调整最大堆 num=max[0];//取出最大堆的最大值 //pop_heap(_First, _Last),要先调用pop_heap()再在容器中删除数据 pop_heap(max.begin(),max.end(),less<int>());//删除最大堆的最大值 max.pop_back(); //在容器中删除 } min.push_back(num);//压入最小堆 push_heap(min.begin(),min.end(),greater<int>());//调整最小堆 } else//奇数时候,放入最大堆 { if(min.size()>0 && num>min[0]) { // push_heap (_First, _Last),要先在容器中加入数据,再调用push_heap () min.push_back(num);//先压入最小堆 push_heap(min.begin(),min.end(),greater<int>());//调整最小堆 num=min[0];//得到最小堆的最小值(堆顶) //pop_heap(_First, _Last),要先调用pop_heap()再在容器中删除数据 pop_heap(min.begin(),min.end(),greater<int>());//删除最小堆的最大值 min.pop_back(); //在容器中删除 } max.push_back(num);//压入数字 push_heap(max.begin(),max.end(),less<int>());//调整最大堆 } }private: vector<int> min; vector<int> max;};
0 0
- LintCode之滑动窗口的中位数
- 滑动窗口的中位数-LintCode
- 小探索--LintCode 滑动窗口的中位数
- LINTCODE——滑动窗口的中位数
- 滑动窗口的中位数
- 找滑动窗口的中位数
- lintcode-滑动窗口的最大值
- LintCode:滑动窗口的最大值
- lintcode,滑动窗口的最大值
- 滑动窗口的最大值-LintCode
- lintcode(362)滑动窗口的最大值
- lintcode滑动窗口最大值
- [LeetCode] Sliding Window Median 滑动窗口中位数
- LintCode-中位数
- LintCode:中位数
- 【LintCode】中位数
- LintCode-中位数
- LintCode 中位数
- 【ios自动化测试】iOS自动化测试框架分析与选择
- Opencascad中Cut操作与Location变换的关系
- NoSQL Manager for MongoDB 连接配置
- Lua利用自定义函数打印_G内容
- Java(扩展Socket通信)
- LintCode之滑动窗口的中位数
- android 数据库的操作基础(二)
- Android Studio 和 Eclipse 中获取SHA1详解
- Android 解决不同进程发送KeyEvent 的问题
- 机器学习第四周
- IOS 成员变量,全局变量,局部变量定义,static与extern的区别
- selenium下拉框之select处理
- Git学习笔记-完全版
- MVC中form提交和在控制器中接收数据