📣 独立日限时特惠: VIP通行证立减$68
查看: 4115| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[树/链表/图] 深入探讨下java的PriorityQueue(pq)/TreeMap(tm)/TreeSet(ts)的时间复杂度

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
现在我能确定的是PQ的单次offer/poll都是Log n复杂度; TM,TS的put/get也是Log n的复杂度;给n个元素build一个PQ是O(n)复杂度。一下几个问题是我不太确定的,希望小伙伴们确定下:
  • build一个pq(从无到有) n次所用时间为O(n),可以不可以说poll一个pq(size为n)一直到空也是O(n)复杂度呢?
  • 对于TM和TS的一些遍历操作,复杂度又是多少呢?(看有人说是O(n)但是我没有找到确定答案。好像是因为遍历操作的时候并不是对这些数据结构直接操作,而且在一个pre-generated的view上面操作。)
  • for (key : tm.keySet())
  • for (value : tm.values())
  • for (entry : tm.entrySet())


如果有确切的链接解释就更好了。谢谢!

评分

参与人数 1大米 +5 收起 理由
14417335 + 5 很有用的信息!

查看全部评分


上一篇:Python面试 coding style
下一篇:Alien dictionary follow up讨论
全局:
从无到有build一个n的pq如果你是指一个一个offer进去是O(NlogN)吧 只有你用一个collection去init一个pq才是O(N) (heapify), 你一个一个poll出来 也是O(NlogN)

评分

参与人数 1大米 +1 收起 理由
mhsasd + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| mhsasd 2019-4-3 02:37:19 | 只看该作者
全局:
iiimisery 发表于 2019-4-2 12:56
从无到有build一个n的pq如果你是指一个一个offer进去是O(NlogN)吧 只有你用一个collection去init一个pq才是 ...

查了下没错 谢谢。其他问题有思路吗?
回复

使用道具 举报

🔗
 楼主| mhsasd 2019-4-3 02:48:08 | 只看该作者
全局:
自问自答下,stackoverflow上面有两个相关的帖子1 2 都说是iterator是O(1)遍历的话就是O(n).
回复

使用道具 举报

🔗
jgao93 2019-4-7 05:45:04 | 只看该作者
全局:
我不确定Java的pq是怎么实现的,可能是heap,楼主可以学一下heap的实现,make heap,heapify了解一下就知道了。你一个一个poll其实就是heap sort,时间复杂度nlogn
回复

使用道具 举报

🔗
jgao93 2019-4-7 05:47:23 | 只看该作者
全局:
ts和tm的遍历本质上就是树的遍历,你想想看树的遍历复杂度
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表