楼主: 匿名
跳转到指定楼层
上一主题 下一主题
收起左侧

狗家电面

 
🔗
workworkhard 2021-2-9 08:59:31 | 只看该作者
全局:
匿名者 发表于 2021-2-9 01:01
当时我也想到了union find,但是比如x=3 k=3 x+k = 6 x-k = 0, 假设6,0都不在数组里 但是 5,4都在 如何有 ...

不太理解你说的如果4或者5 在数组里怎么办。。
我想的是 先把所有的数存成set 然后遍历这个数组 要是x+k,x-k 在数组里就union 一下。。
有点像刷题网128longest consecutive sequence的解法 只不过128题 K=1。。
不知道我这样做时间复杂度是否好于O(N2)
我理解的 unionfind 在压缩路径下 时间复杂度应该都是 O(logN)。。。
correct me if I am wrong.

评分

参与人数 2大米 +4 收起 理由
gyzdmgqy + 2 给你点个赞!
heiyu + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
wushi17ie 2021-2-9 15:10:22 | 只看该作者
全局:
本帖最后由 wushi17ie 于 2021-2-9 15:12 编辑
Tdvxufnek 发表于 2021-2-7 15:23
第二题也可以这样做

首先把乱序数组里面的每个 number x, 变成 [x - k, x + k] 的 range

这个不太懂,求教一下,如果 k = 2, arr = [2, 9, 12], 那么
[2, 9, 12] => [[0, 4], [7, 11], [10, 14]],合并后是 [[0, 4], [7, 14]]
这样再扫原数组的时候岂不是会把9和12归为一组?
是不是应该变成 [x - k/2, x + k/2] 的区间?

评分

参与人数 2大米 +3 收起 理由
gyzdmgqy + 2 给你点个赞!
Tdvxufnek + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
wushi17ie 发表于 2021-02-08 23:10:22
这个不太懂,求教一下,如果 k = 2, arr = , 那么
=> , , ],合并后是 , ]
这样再扫原数组的时候岂不是会把9和12归为一组?
海牙,大意了,不应该把value直接变成区间的,应该先拿数字扫,最后再变成区间,感谢提醒!

评分

参与人数 1大米 +2 收起 理由
gyzdmgqy + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
pengzhao0524 2021-2-9 20:09:02 | 只看该作者
全局:
第二题有点儿像839

评分

参与人数 2大米 +3 收起 理由
Tdvxufnek + 1 赞一个
gyzdmgqy + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
workworkhard 发表于 2021-2-9 08:59
不太理解你说的如果4或者5 在数组里怎么办。。
我想的是 先把所有的数存成set 然后遍历这个数组 要是x+ ...

这个题目的要求是“差值小于k”,并不是“等于k”。所以只查询+k, -k两个值是不够的。

评分

参与人数 1大米 +2 收起 理由
gyzdmgqy + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
能问一下第一题的输入格式吗?为啥要用分治法呢?

评分

参与人数 1大米 +2 收起 理由
gyzdmgqy + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
huali0415 发表于 2021-2-7 09:20
第二题用bucket应该可以

能详细说一下bucket的思路吗?

评分

参与人数 1大米 +2 收起 理由
gyzdmgqy + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
huali0415 2021-2-10 00:59:46 | 只看该作者
全局:
yiliaobailiao 发表于 2021-2-9 23:32
能详细说一下bucket的思路吗?

1,把数字全部装进buckets(hashmap即可)
2,从每个bucket出发进行dfs,每次去找左、右相邻的两个buckets看看是不是能组成一个group,并且去重
这样的话,原数组遍历一次,所有buckets遍历一次,时间和空间都是线性的

评分

参与人数 2大米 +5 收起 理由
yiliaobailiao + 3 很有用的信息!
gyzdmgqy + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
地中有山 2021-2-10 01:42:11 | 只看该作者
全局:
感谢LZ分享经历!

评分

参与人数 1大米 +2 收起 理由
gyzdmgqy + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

地里匿名用户
🔗
匿名用户-UDI3X  2021-2-10 02:47:21
workworkhard 发表于 2021-2-9 08:59
不太理解你说的如果4或者5 在数组里怎么办。。
我想的是 先把所有的数存成set 然后遍历这个数组 要是x+ ...

嗯嗯 同另外一位小伙伴说的一样 此题要求任何绝对值差小于等于k的 都分在一个组里 所以原来的例子里 4,5也得分进去 我就不知该怎么写了
回复

使用道具 举报

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

本版积分规则

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