关注
这个问题很大啊,答主使用PriorityQueue,慢慢分析一下。把窗口大小size记为k,实现初始将k个数入堆,时间O(k*log(k)),算常数时间。接着,开始遍历。从最大堆中取最大值为O(1),借助调用remove(E e)方法来移出元素o,PriorityQueue中提供了三种remove方法,第一种为remove(),删除根元素,本质调用poll()方法,O(logk)。第二种提供索引,表示删除什么位置的元素remove(int i),时间O(logk)。答主用了第三种remove(E e),这需要先遍历数组找到删除元素的索引,从而时间复杂度O(k)。之后调用add(E e),本质是调用offer(E e),offer一个新元素,是通过把新元素放在末尾,然后将新元素不断往上与父母做比较得到,时间复杂度O(logk)。综上,时间复杂度为O(klogk + n(1 + k + logk)) = O(nk),空间复杂度为O(1),和直接暴力解法差别不大。
4
相关推荐
牛客热帖
更多
正在热议
更多
# 哪些AI项目值得做? #
16273次浏览 430人参与
# 秋招笔试记录 #
397641次浏览 2194人参与
# 华泰星战营,提前锁定校招offer #
11693次浏览 354人参与
# 实习时最怕听到的一句话 #
14758次浏览 137人参与
# 90后北漂现状 #
38733次浏览 225人参与
# 找不到大厂实习可以去小厂吗? #
13058次浏览 113人参与
# 机械人,说说你的烦心事 #
143967次浏览 1150人参与
# 应届生初入职场,求建议 #
332533次浏览 2916人参与
# 简历上如何体现你的“AI”能力? #
7442次浏览 179人参与
# 你简历上最心虚的一句话 #
14934次浏览 156人参与
# 没有面试的日子里,你在做什么 #
8746次浏览 230人参与
# 携程笔试 #
162402次浏览 903人参与
# 如果有时光机,你最想去到哪个年纪? #
77103次浏览 858人参与
# 你总挂在第__面? #
5538次浏览 59人参与
# ai智能作图 #
682517次浏览 5727人参与
# 汉得笔试 #
3905次浏览 23人参与
# 24届秋招同行攻略分享 #
1478910次浏览 14432人参与
# 你知道最慷慨和最抠的公司分别是 #
7275次浏览 59人参与
# 绿盟笔试 #
3429次浏览 24人参与
# 大厂无回复,继续等待还是奔赴小厂 #
356873次浏览 2024人参与
# 机械人还在等华为开奖吗? #
333970次浏览 1628人参与
查看17道真题和解析