解法一:两个堆
这个题很容易让人联想到上次的两个堆维护中位数的问题。相似的,这个题也可以用两个堆加上延迟删除分别维持最大值和最小值,复杂度为O(NlogN)。还有一个数据结构能达到和两个堆相似的效果,即平衡二叉树。
from heapq import *
from collections import defaultdict
class Solution:
def longestSubarray(self, nums: List[int], limit: int) -> int:
dic = defaultdict(int)
minheap, maxheap = [], []
heapify(minheap)
heapify(maxheap)
l, r = 0,