![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单调队列
StephenZhen
细心,努力,认真,拼搏
展开
-
合并集列题与理解
题意 最近刷题刷到了一道关于字符串换位置的题目,采用的解法是合并集的方法,于是参考了CSDN上的一篇文章,发现很容易理解。 题目 给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 输入:s = “dcab”, pairs = [[0,3],[1,2]] 输出:“bacd” 解释:原创 2020-05-29 14:23:11 · 251 阅读 · 0 评论 -
剑指Offer的输入流问题
1.数据流中的中位数 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 采用大小堆的方法,排序来实现,采用PriorityQueue的数据结构,该数据结构具有自动采用堆排序的队列特点,因此可以将较大的值存于minQueue(小顶堆),较小的值存在于maxQueue(大顶堆),此原创 2020-05-13 22:50:31 · 100 阅读 · 0 评论 -
滑动窗口
双端单调队列,并判断是否超出期限: class Solution { public: vector<int> maxInWindows(const vector<int>& num, unsigned int size) { vector<int> res; deque<int> s; for(unsigned int i=0;i<num.size();++i){原创 2020-05-13 17:48:52 · 129 阅读 · 0 评论