要求至少先看懂思路。实话说自刷的时候就是到这里,借助GPT又理解了一次:
239. 滑动窗口最大值
有几个之前没理解到的点:
①目前的队列中的元素,是目前窗口内所有元素的子集。
在加入新元素时,都会提前把不在窗口的那个元素pop掉(通过deque.pop(num[i-k]这个操作,来pop掉固定数值的元素,来实现)
②由自己指定规则的单调队列:
新加入的元素,大于目前队列的头元素,则把头元素pop掉(循环,直至比头元素小)
如果比尾元素大,则pop尾元素(循环,直至比尾元素大)
也就是说:目前队列时候留下新加入的元素以及比这个元素大的元素
(这样当窗口继续滑动的时候,也不会错过最大值
347.前 K 个高频元素
似乎就是利用小顶堆的特点,把堆里的元素始终维持在k个,将加入元素的频率和小顶堆口(出现频率最低)的元素的频率进行对比。
思路:
①用字典储存为“元素:出现频率”的键对值
②入小顶堆
过两天再试着回忆思路复现代码