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

请教一个Leetcode上的算法题

全局:

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

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

x
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.

Your algorithm should run in O(n) complexity.
-------------------------------------------------------------------------------
以下是我的想法,但我略糊涂这想法是不是o(n)的。
先扫一遍,每个数放入Hashset

针对Hashset里的每个现存的数,往上找最多n个,如果不在Hashset里的话就停下来,如果在的话就把该数从Hashset里删了。往下找类似。
比如我从4开始找,发现5就没了,所以往上找停止。然后往下找,发现3,2,1都在Hashset里,把它们删除,然后记录这个长度,与当前最长的比较。

略糊涂我这个想法是不是o(n)的

上一篇:Online Judge中Surrounded Regions的题意
下一篇:请教各位大神一道python的题目,刚学python卡住了做不下去了啊~求救!!!!!!
🔗
ryancooper 2013-3-5 16:43:15 | 只看该作者
全局:
没太懂lz的想法,要不你写写代码出来看看
回复

使用道具 举报

🔗
ryancooper 2013-3-5 16:47:50 | 只看该作者
全局:
ryancooper 发表于 2013-3-5 16:43
没太懂lz的想法,要不你写写代码出来看看

哦,我理解了好像
回复

使用道具 举报

🔗
zengxinzhy 2013-3-5 17:06:58 | 只看该作者

,

全局:
本帖最后由 zengxinzhy 于 2013-3-5 06:33 编辑

楼主的想法确实是O(n)的复杂度,因为:
扫描数据,放入hashset中:O(n)
在hashset中查值时,每个元素最多被访问到1次,因此复杂度也为O(n),但是对hashset进行初始化时,复杂度为O(m),m为hashset的容量一般来说,m会选取为n的2到3倍
因此总的复杂度也就是O(n)
回复

使用道具 举报

🔗
北美农民 2013-3-5 17:09:09 | 只看该作者
全局:
仔细思考一下设计hashfunction和factorload吧。

反正现在随便弄个hash都喊O(n),真面试起来倒无所谓了。
回复

使用道具 举报

全局:
楼主这是不对的。
hash顶多期望是1,insert和delete都不能保证O(1),更别说如果用open addressing来实现了。
这里用位图就行了,其他流程你思路是对的。
回复

使用道具 举报

🔗
zengxinzhy 2013-3-5 17:33:26 | 只看该作者
全局:
好困想睡觉 发表于 2013-3-5 05:19
楼主这是不对的。
hash顶多期望是1,insert和delete都不能保证O(1),更别说如果用open addressing来实现了 ...

位图的话复杂度为O(k)吧,k为输入数组的范围
回复

使用道具 举报

全局:
zengxinzhy 发表于 2013-3-5 17:33
位图的话复杂度为O(k)吧,k为输入数组的范围

遍历时以输入为索引去遍历,而不用遍历整个位图,复杂度就等于n了。
回复

使用道具 举报

🔗
zengxinzhy 2013-3-5 17:45:23 | 只看该作者
全局:
好困想睡觉 发表于 2013-3-5 05:42
遍历时以输入为索引去遍历,而不用遍历整个位图,复杂度就等于n了。

遍历的时候是可以这么做,但为位图开辟一片空间以后首先是需要初始化的,把位图中的所有数据都设为0,这一步是无论如何也避免不了的O(k)
回复

使用道具 举报

🔗
zengxinzhy 2013-3-5 18:19:13 | 只看该作者
全局:
zengxinzhy 发表于 2013-3-5 05:06
楼主的想法确实是O(n)的复杂度,因为:
扫描数据,放入hashset中:O(n)
遍历hashset时,每个元素最多被到 ...

Sorry, 开始的时候把楼主的遍历方法理解错了,把关于m的分析跳过
回复

使用道具 举报

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

本版积分规则

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