代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素
链接: 239. 滑动窗口最大值
链接: 347.前 K 个高频元素
看完代码随想录之后的想法
239.滑动窗口最大值:看完卡哥视频之后我明白了底层的思路:push新入的数字要和队首元素进行比较,队首小于新加入的元素要被pop出去。这样就保证了队首的元素一直是最大的,那么取最大的值的时候只需要pop队首元素即可。
但是我在看Java代码的时候发现,使用的双端队列实现的,用一个单调队列来存储对应的下标,每当窗口滑动的时候,直接取队列的头部指针对应的值放入结果集即可。然而代码里面出现了很多dequeue调用的函数,比如peekLast()和poll(),这些api我之前没有了解到。
347.前K个高频元素:首先各个元素出现的频次需要记录,这里采用k-v结构的map进行存储,再使用优先级队列里的小顶堆进行排序,取得前K频次的元素。