面试问了一个问题,怎么避免 C 去邀请 A,觉得有点意思?

2020-07-15 16:31:06 +08:00
 xbdsky
大神们会怎么处理?
A 邀请->B 邀请->C
问怎么避免 C 去邀请 A
5259 次点击
所在节点    PHP
44 条回复
tcfenix
2020-07-15 17:25:48 +08:00
https://leetcode.com/problems/linked-list-cycle/description/

啊 是这题
实际上 set 是第一步直觉的处理办法,
然后这边面试官通常应该会加一点限定条件,比如空间复杂度不能是 O(n),再往双指针的方向引导
lff0305
2020-07-15 17:29:46 +08:00
判断有向图是否存在环路,可以用邻接矩阵,计算传递闭包
Sapp
2020-07-15 17:30:14 +08:00
你的这个问题都不清不楚的,
首先 c 不能邀请 a 是为什么? 因为单独不能邀请 a ?还是不能邀请已经存在的用户?还是不能邀请邀请过别人的用户?还是不能邀请和自己有关联邀请的用户?还是 a 的邀请次数满了? 不同问题显然是不同答案
qwertyzzz
2020-07-15 17:36:47 +08:00
@Sapp 一看就是不能成一个环吧
xbdsky
2020-07-15 17:37:39 +08:00
@newtype0092 好吧,A 可以邀请 N 个,现在不最多 3 级吗?手动狗头
iseki
2020-07-15 17:40:27 +08:00
这问题能不能再明确点
xbdsky
2020-07-15 17:41:37 +08:00
@hello2060
@Sapp
就简单的问下这个需求呢,没说太多的东西,估计是想考怎么优化。
xbdsky
2020-07-15 17:43:05 +08:00
@iseki 面试的没说太多条件呢,发现你们这些大神考虑的东西还是很全面的 dog
newtype0092
2020-07-15 18:02:17 +08:00
@tcfenix #21 这题好奇怪,input 里给的 pos 不就是答案么,为什么还要算?
Vegetable
2020-07-15 18:13:31 +08:00
奇怪的问题,没头没脑的,不同场景差太多了,如果是邀请加入某个范围,已经加入的人肯定无法被邀请了,A 是第一个加入的,肯定不能被邀请了,比如邀请注册的时候,不能邀请已注册用户,这时候根本不需要判断关系链(相当于所有人都属于一个集合,本质上也是并查集)。

需要判断关系链的邀请场景真滴想不出来,但是并查集的思路起码能解决你提到这个需求,被邀请者打上和邀请者一样的标记,不能邀请相同标记的人就行了,但是这样会同时堵死 A 邀请 C 的情况,除非做更复杂的判断。
zarte
2020-07-15 18:20:59 +08:00
他们不满意,你可以问面试的呀。解决一个问题即使没过面试也是有意义的。而且还能知道是不是面试的不靠谱。
tcfenix
2020-07-15 18:35:46 +08:00
@newtype0092
那个例子的输入只是为了方便读者理解题目,实际上入参就是一个 node 而已
xcstream
2020-07-15 18:40:47 +08:00
父级 id 都记录下来
westoy
2020-07-15 18:46:13 +08:00
这场景应该是针对社交平台病毒式传播用的, 分享得红包一类, 避免被羊毛党开马甲海闭环式刷邀请薅羊毛, 不是针对注册的
mcfog
2020-07-15 18:59:03 +08:00
这有啥奇怪的,面试者把问题及相关背景确认清楚的过程(又或者是想当然地直接开始回答)也是面试中很有价值的一环
zsdroid
2020-07-15 19:23:00 +08:00
理论上不存在 C 去邀请 A 问题,一般应用推广都是邀请新用户得奖励,A 又不是新用户。所以邀请了也白邀请。
conghuiwang
2020-07-15 19:48:04 +08:00
简单看了下评论,胡言乱语,不懂装懂的人好多
xl9211
2020-07-15 19:53:12 +08:00
@zsdroid 正解
sjf122
2020-07-15 21:10:15 +08:00
下级的下级不能是自己的上级,不然就成圈了
sunjiayao
2020-07-15 22:04:13 +08:00
创建闭包表,邀请前先检测下是否已存在关系链。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/690278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX