由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道Uber的电面题
相关主题
贴点面试题, ms和google的GM面经
一个EDA的问题CLRS算法书中BFS的疑问
google面经(挂了)三道 Amazon Onsite Coding 题 (转载)
有向图判断有无环一道变形的Jump题
一道电面题请教一道G家onsite题。。。
问一道FLAG经典题今天1/9 Amazon onsite,当天晚上收到offer,上面筋
如何判断一个图中是否有环?报点面经
检查graph里面是否有circle,是用BFS,还是DFS?贡献一道G家onsite题吧
相关话题的讨论汇总
话题: coord话题: depend话题: ne话题: p2话题: p1
进入JobHunting版参与讨论
1 (共1页)
l********o
发帖数: 56
1
刚刚跪了。。大家看看这道题有什么好方法吗?
给一串direction, 比如A N C 意味着A在C的北边。写一个function验证这些direction
是否valid
Note:A N C, A NE C同时出现是合法的
例子:下面这个不合法,因为A N C, C NE D所以不可能A S D
A N C
B NE C
C NE D
A S D
B W A
k******i
发帖数: 11
2
x y 轴分别排序?
I*******g
发帖数: 7600
3
建树 BFS 如果下一个建树出现矛盾就非法

direction

【在 l********o 的大作中提到】
: 刚刚跪了。。大家看看这道题有什么好方法吗?
: 给一串direction, 比如A N C 意味着A在C的北边。写一个function验证这些direction
: 是否valid
: Note:A N C, A NE C同时出现是合法的
: 例子:下面这个不合法,因为A N C, C NE D所以不可能A S D
: A N C
: B NE C
: C NE D
: A S D
: B W A

l********o
发帖数: 56
4
能说详细点儿吗?

【在 I*******g 的大作中提到】
: 建树 BFS 如果下一个建树出现矛盾就非法
:
: direction

r****7
发帖数: 2282
5
有向图,带环就invalid,不带环就valid
l********o
发帖数: 56
6
四个方向找环是正解。。 学习了
g*******0
发帖数: 20
7
两个方向就够了

【在 l********o 的大作中提到】
: 四个方向找环是正解。。 学习了
d****e
发帖数: 251
8
有环没环不是问题。取决于这个题目是否是基于简单的网格系统。
如果是,你可以用一个简单的hash map,检查是否有冲突的坐标。时间复杂度O(n)
否者,我们得知道怎么判断冲突,譬如在这里,is A NE D? 这个就更复杂了。
b******i
发帖数: 914
9
x, y两个方向建立一个关系map,然后bfs或者dfs map找有没有环

direction

【在 l********o 的大作中提到】
: 刚刚跪了。。大家看看这道题有什么好方法吗?
: 给一串direction, 比如A N C 意味着A在C的北边。写一个function验证这些direction
: 是否valid
: Note:A N C, A NE C同时出现是合法的
: 例子:下面这个不合法,因为A N C, C NE D所以不可能A S D
: A N C
: B NE C
: C NE D
: A S D
: B W A

l********o
发帖数: 56
10
刚刚跪了。。大家看看这道题有什么好方法吗?
给一串direction, 比如A N C 意味着A在C的北边。写一个function验证这些direction
是否valid
Note:A N C, A NE C同时出现是合法的
例子:下面这个不合法,因为A N C, C NE D所以不可能A S D
A N C
B NE C
C NE D
A S D
B W A
相关主题
问一道FLAG经典题GM面经
如何判断一个图中是否有环?CLRS算法书中BFS的疑问
检查graph里面是否有circle,是用BFS,还是DFS?三道 Amazon Onsite Coding 题 (转载)
进入JobHunting版参与讨论
k******i
发帖数: 11
11
x y 轴分别排序?
I*******g
发帖数: 7600
12
建树 BFS 如果下一个建树出现矛盾就非法

direction

【在 l********o 的大作中提到】
: 刚刚跪了。。大家看看这道题有什么好方法吗?
: 给一串direction, 比如A N C 意味着A在C的北边。写一个function验证这些direction
: 是否valid
: Note:A N C, A NE C同时出现是合法的
: 例子:下面这个不合法,因为A N C, C NE D所以不可能A S D
: A N C
: B NE C
: C NE D
: A S D
: B W A

l********o
发帖数: 56
13
能说详细点儿吗?

【在 I*******g 的大作中提到】
: 建树 BFS 如果下一个建树出现矛盾就非法
:
: direction

r****7
发帖数: 2282
14
有向图,带环就invalid,不带环就valid
l********o
发帖数: 56
15
四个方向找环是正解。。 学习了
g*******0
发帖数: 20
16
两个方向就够了

【在 l********o 的大作中提到】
: 四个方向找环是正解。。 学习了
d****e
发帖数: 251
17
有环没环不是问题。取决于这个题目是否是基于简单的网格系统。
如果是,你可以用一个简单的hash map,检查是否有冲突的坐标。时间复杂度O(n)
否者,我们得知道怎么判断冲突,譬如在这里,is A NE D? 这个就更复杂了。
b******i
发帖数: 914
18
x, y两个方向建立一个关系map,然后bfs或者dfs map找有没有环

direction

【在 l********o 的大作中提到】
: 刚刚跪了。。大家看看这道题有什么好方法吗?
: 给一串direction, 比如A N C 意味着A在C的北边。写一个function验证这些direction
: 是否valid
: Note:A N C, A NE C同时出现是合法的
: 例子:下面这个不合法,因为A N C, C NE D所以不可能A S D
: A N C
: B NE C
: C NE D
: A S D
: B W A

h******e
发帖数: 52
19
Solution: use hashtable, the key is the letter and the value is pair of (x,
y), where x and y could be -1, 0, +1. We can choose one in the beginning as
(0, 0).
Example
A N C -> C(0, 0) A(0, +1) we choose C as (0, 0)
B NE C -> B is not in table yet, add B(+1, +1)
C NE D -> D is not in table yet, add D(-1, -1)
A S D -> both A and D are in table. A S D requires A.y < D.y. However A.y ==
+1 and D.y == -1. So it is not true.
B W A -> requires B.x < A.x, however B.x == +1 and A.x == 0 which is not
true
欢迎指正!
l*****a
发帖数: 14598
20
如果是
A N C
D N E
你打算如何给D/E确定坐标呢?

,
as
==

【在 h******e 的大作中提到】
: Solution: use hashtable, the key is the letter and the value is pair of (x,
: y), where x and y could be -1, 0, +1. We can choose one in the beginning as
: (0, 0).
: Example
: A N C -> C(0, 0) A(0, +1) we choose C as (0, 0)
: B NE C -> B is not in table yet, add B(+1, +1)
: C NE D -> D is not in table yet, add D(-1, -1)
: A S D -> both A and D are in table. A S D requires A.y < D.y. However A.y ==
: +1 and D.y == -1. So it is not true.
: B W A -> requires B.x < A.x, however B.x == +1 and A.x == 0 which is not

相关主题
一道变形的Jump题报点面经
请教一道G家onsite题。。。贡献一道G家onsite题吧
今天1/9 Amazon onsite,当天晚上收到offer,上面筋帮发一个同学面G家onsite的面经
进入JobHunting版参与讨论
p*****2
发帖数: 21240
21

大牛准备出山了?

【在 l*****a 的大作中提到】
: 如果是
: A N C
: D N E
: 你打算如何给D/E确定坐标呢?
:
: ,
: as
: ==

d******e
发帖数: 2265
22
建片叙关系
如果 A S D 改成 D-> A.A n c 改为 A-> C
这题是不是见过了?

direction

【在 l********o 的大作中提到】
: 刚刚跪了。。大家看看这道题有什么好方法吗?
: 给一串direction, 比如A N C 意味着A在C的北边。写一个function验证这些direction
: 是否valid
: Note:A N C, A NE C同时出现是合法的
: 例子:下面这个不合法,因为A N C, C NE D所以不可能A S D
: A N C
: B NE C
: C NE D
: A S D
: B W A

w****2
发帖数: 6
23
问题有些模糊的地方比如什么是合法,怎么推理(A N C)& (C NE D) =》 (A ?D
)对这个特殊问题合法性和推理规则也不难定义。
Given d = {N, NE, E, SE, S, SW, W, NW}.
- (d1, d2) is consistent if d1 \cap d2 != \empty
- (A d1 B) (B d2 C) => (A d1 \cap d2 B)
- (A d1 B) => (B d2 A) where d2 is the substitute d1 with S<->N and W<->E
Let D be a n X n matrix (it can be considered a graph) where D(i,j) is a set
of directions from i to j, given or inferred. Then run the inference until
no more changes. During inference, whenever a new direction is inferred for
i and j, check if the new direction is consistent with existing ones.
To make it simpler, consider the given objects an ordered set, then it is
not necessry to consider both (A d1 B) and (B d2 A) though the given (B d2 A
) needs to be converted to (A d1 B)
I think this should work, not sure if it is efficient.
l******s
发帖数: 3045
24
像word ladder ii类似的一开始预处理所有近似点的做法,建一个大的依赖map先。
C#测试了几个,单连通图的,多独立连通图的正面反面用例,都通过了。
//directions = {{"A", "N", "C"}, {"B", "NE", "C"}, {"C", "NE", "D"}, {"A", "
S", "D"}, {"B", "W", "A"}}
// AB
// C
// D
// A <- false
private static bool validDirections(IList> directions)
{
int[,] depend = new int[26, 8]; //8 directions 0:N; 1:NE; 2:E; 3:SE; 4:S
; 5:SW; 6:W; 7:NW
for (int i = 0; i < depend.GetLength(0); i++)
for (int j = 0; j < depend.GetLength(1); j++)
depend[i, j] = int.MinValue;
foreach(var dir in directions){ //Building a Dual direction dependency
Map
int p1 = dir[0][0] - 'A', p2 = dir[2][0] - 'A';
switch(dir[1]){
case "N": depend[p2, 0] = p1; depend[p1, 4] = p2; break;
case "NE": depend[p2, 1] = p1; depend[p1, 5] = p2; break;
case "E": depend[p2, 2] = p1; depend[p1, 6] = p2; break;
case "SE": depend[p2, 3] = p1; depend[p1, 7] = p2; break;
case "S": depend[p2, 4] = p1; depend[p1, 0] = p2; break;
case "SW": depend[p2, 5] = p1; depend[p1, 1] = p2; break;
case "W": depend[p2, 6] = p1; depend[p1, 2] = p2; break;
case "NW": depend[p2, 7] = p1; depend[p1, 3] = p2; break;
}
}
int[,] coord = new int[26, 2]; //coord[i, 0] is X, coord[i, 1] is Y
for (int i = 0; i < coord.GetLength(0); i++) coord[i, 0] = coord[i, 1] =
int.MinValue;
return dfsSearch(depend, coord, -1, -1, -1);
}
private static bool dfsSearch(int[,] depend, int[,] coord, int last, int
direct, int cur){
if(last == -1){
for(int i = 0; i < depend.GetLength(0); i++)
for(int j = 0; j < depend.GetLength(1); j++)
if (depend[i, j] != int.MinValue){
coord[i, 0] = coord[i, 1] = 0;
int dep = depend[i, j];
depend[i, j] = int.MinValue;
depend[dep, (j + 4) % 8] = int.MinValue;
if (!dfsSearch(depend, coord, i, j, dep)) return false;
}
}
else{
int x = -1, y = -1;
switch (direct){ //8 directions 0:N; 1:NE; 2:E; 3:SE; 4:S; 5:SW; 6:W
; 7:NW
case 0: x = coord[last, 0] + 1; y = coord[last, 1]; break;
case 1: x = coord[last, 0] + 1; y = coord[last, 1] + 1; break;
case 2: x = coord[last, 0]; y = coord[last, 1] + 1; break;
case 3: x = coord[last, 0] - 1; y = coord[last, 1] + 1; break;
case 4: x = coord[last, 0] - 1; y = coord[last, 1]; break;
case 5: x = coord[last, 0] - 1; y = coord[last, 1] - 1; break;
case 6: x = coord[last, 0]; y = coord[last, 1] - 1; break;
case 7: x = coord[last, 0] + 1; y = coord[last, 1] - 1; break;
}
if (coord[cur, 0] != int.MinValue && (coord[cur, 0] != x || coord[
cur, 1] != y))//validate if all depends match
return false;
coord[cur, 0] = x; coord[cur, 1] = y;
for (int j = 0; j < depend.GetLength(1); j++)
if (depend[cur, j] != int.MinValue){
int dep = depend[cur, j];
depend[cur, j] = int.MinValue;
depend[dep, (j + 4) % 8] = int.MinValue;
if (!dfsSearch(depend, coord, cur, j, dep)) return false;
}
}
return true;
}

【在 l*****a 的大作中提到】
: 如果是
: A N C
: D N E
: 你打算如何给D/E确定坐标呢?
:
: ,
: as
: ==

p*****2
发帖数: 21240
25
我感觉dfs应该能搞定。
h***s
发帖数: 3
26
Topological sort 我觉得是
M**a
发帖数: 25
27
我也觉得是 有向图找环, 比如 A N C 可以转换为 A 的y坐标大于C的y坐标, B NE
C 就是 B 的x和y坐标都大与C的x,y坐标, 然后在这一堆不等式里面找冲突的, 可
以转换成有向图里面是否有环的问题。
1 (共1页)
进入JobHunting版参与讨论
相关主题
贡献一道G家onsite题吧一道电面题
帮发一个同学面G家onsite的面经问一道FLAG经典题
G家onsite后求祝福如何判断一个图中是否有环?
amazon onsite面经,已跪检查graph里面是否有circle,是用BFS,还是DFS?
贴点面试题, ms和google的GM面经
一个EDA的问题CLRS算法书中BFS的疑问
google面经(挂了)三道 Amazon Onsite Coding 题 (转载)
有向图判断有无环一道变形的Jump题
相关话题的讨论汇总
话题: coord话题: depend话题: ne话题: p2话题: p1