Redian新闻
>
土耳其和中国审美相似 (转载)
avatar
土耳其和中国审美相似 (转载)# Fashion - 美丽时尚
l*p
1
第一通电话:
听口音应该是老印的,有点口音,面试过程中好几次我都没听清反复问。
上来没寒暄几句就写代码:
找出一个树中最深的结点。
明显留了好多细节让我问,于是我开始clarify:
1. 是不是binary tree。答:good question, yes, assume it's a binary tree
2. 是不是balanced binary tree。答:does that matter? 我边想边说,好像没关系
然后我再也想不出其它问题了。开始想算法。想一半,他才提醒我说还有一个细节我没
问:如果有多个最深结点怎么办。回答是返回最右的。这是一个失分的点
然后解释算法,可以用深度优先遍历也可以用广度优先遍历,记录所有叶节点的深度,
然后找出最深的。他问复杂度,我说时间是O(N), 空间是O(N). 他说空间能优化吗?我
说能, 在遍历过程中只记录最深的就行。他问这下的空间复杂度,我说是O(1) 。然后
让我开始写代码,我说深度优先呢还是广度优先,他说有什么区别,我说差不多,然后
想想不对,广度优先需要一个queue,这是O(N)的空间,深度的只要O(lgN)的空间,这
才想起刚才说O(1)的空间是错的,又一个失分点。
接着开始写代码,居然花了好长时间,还犯了两个严重错误:
1. 返回的并不是最右的,而是最左的最深结点
2. 找到一个最深结点后没有记录当前的深度
一边说话一边写代码的能力还是不行啊,这种问题要是让我不说话一个人做,估计10分
钟就能搞定。这次居然花了40分钟,然后面试就结束了。
一点教训:应该把requirement记下来,写代码后对着查
我觉得这个老印肯定给我一个差评的
第二通电话:
谢天谢地, 是个老美的口音
先是对着简历问我的一篇论文,接着还是写代码:
结出一个数组,代表一个小岛的横切面,每个数字代码高度,求这个岛中的湖能积多少水
先是想着按数组的顺序一个个检查高度,找出各个湖的位置。想了会,没想出比较好的
解法。于是换成另一种思路,一层层地检查,从0到小岛的最高点,记录每层能容的水
量。这下就迅速把代码写出来了。然后问复杂度,我说是O(maxHeight*N*N),如果
maxHeight是个相对小的数,那么就是O(N*N)。他说不错,是polynomial time,然后自
己说这个问题没法优化到O(N),他以前试过。
接着问我以前做过的项目,最喜欢哪个项目,为什么,然后就结束了。
这次电话应该是个positive的评价,如果是这样的话,一次negative,一次positive,
我估计他们会再给我一次tie breaking interview。不过也有可能因为第一通电话实在
太差,直接给我拒了
avatar
k*e
2
可以用来买app吗?
avatar
x*7
3
【 以下文字转载自 WorldNews 讨论区 】
发信人: xiaxie7 (xiaxie), 信区: WorldNews
标 题: 土耳其和中国审美相似
发信站: BBS 未名空间站 (Fri Apr 2 00:01:12 2010, 美东)
http://life.globaltimes.cn/entertainment/2010-04/518619.html
都喜欢欧亚混血儿。
avatar
h*n
4
第二题不就是那个water container的问题么 O(n) 就行了
先找到最高点,然后分别从最左,从最右向最高点方向更新积水即可。
avatar
s*c
5
yes
avatar
R*o
6
依我看也稀松平常

【在 x*****7 的大作中提到】
: 【 以下文字转载自 WorldNews 讨论区 】
: 发信人: xiaxie7 (xiaxie), 信区: WorldNews
: 标 题: 土耳其和中国审美相似
: 发信站: BBS 未名空间站 (Fri Apr 2 00:01:12 2010, 美东)
: http://life.globaltimes.cn/entertainment/2010-04/518619.html
: 都喜欢欧亚混血儿。

avatar
l*a
7
打个岔,O(N*N)就是polynomial time,他应该想要linear time的解法。
avatar
x*7
8
很端庄。
不过长相的确很平均。平均就是美。

【在 R*****o 的大作中提到】
: 依我看也稀松平常
avatar
g*u
9
为啥 “广度优先需要一个queue,这是O(N)的空间”, 任何时候 queue里面可以只存目
前level和下一个level的节点,目标节点就是BFS最后一个一个节点。
哪里理解错了吗?
avatar
m*y
10
你咋知道她是欧亚混血啊?
不过土耳其本来就是东西方的交界
avatar
K*n
11
当前level就是O(N)

【在 g**u 的大作中提到】
: 为啥 “广度优先需要一个queue,这是O(N)的空间”, 任何时候 queue里面可以只存目
: 前level和下一个level的节点,目标节点就是BFS最后一个一个节点。
: 哪里理解错了吗?

avatar
g*9
12
她脸上好多痘痘,我有个土耳其朋友长得比她美,不是混血。
avatar
l*o
14
一般般!
avatar
h*n
15
不管是哪个题,都可以O(n) 贴下我的代码:
Container with most water:
class Solution {
public:
int maxArea(vector &height) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int i = 0;
int j = height.size()-1;

int res = INT_MIN;
while(i{
int minHeight = height[i]>=height[j]?height[j]:height[i];
int area = (j-i)*minHeight;
if(area >= res) res = area;

if(height[i]else j--;
}
return res;
}
};
Trapping water:
class Solution {
public:
int trap(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int h=0,total=0,i;
if(n<=2) return 0;
//Find the highest bar
for(i=0;i{
if(A[i]>A[h]) h = i;
}
int left = 0;
for(i=1;i{
if(A[i]>=A[left])left = i;
else total += A[left]-A[i];
}

int right = n-1;
for(i=n-1;i>h;i--)
{
if(A[i]>=A[right])right = i;
else total += A[right]-A[i];
}
return total;
}
};

【在 b*****u 的大作中提到】
:
: 两码事,他说的应该是
: http://www.leetcode.com/groups/google-interview/forum/topic/rai
: 你说的是
: http://www.leetcode.com/groups/google-interview/forum/topic/con

avatar
x*7
16
古代突厥民族就是欧亚混血的游牧民族。
今天土耳其人欧洲血统多一些,而中国北方和西北方少数民族亚洲血统多一些。

【在 m*******y 的大作中提到】
: 你咋知道她是欧亚混血啊?
: 不过土耳其本来就是东西方的交界

avatar
d*e
17
1 - 应该是O(1)空间吧,前缀递归遍历

【在 l****p 的大作中提到】
: 第一通电话:
: 听口音应该是老印的,有点口音,面试过程中好几次我都没听清反复问。
: 上来没寒暄几句就写代码:
: 找出一个树中最深的结点。
: 明显留了好多细节让我问,于是我开始clarify:
: 1. 是不是binary tree。答:good question, yes, assume it's a binary tree
: 2. 是不是balanced binary tree。答:does that matter? 我边想边说,好像没关系
: 然后我再也想不出其它问题了。开始想算法。想一半,他才提醒我说还有一个细节我没
: 问:如果有多个最深结点怎么办。回答是返回最右的。这是一个失分的点
: 然后解释算法,可以用深度优先遍历也可以用广度优先遍历,记录所有叶节点的深度,

avatar
x*7
18
嗯,皮肤不是很光滑。
我发现埃塞俄比亚人和韩国人皮肤比较光滑,虽然前者很黑,后者很白。

【在 g********9 的大作中提到】
: 她脸上好多痘痘,我有个土耳其朋友长得比她美,不是混血。
avatar
h*n
19
第一题,随手写了DFS和BFS,请指教
TreeNode* GetDeepestNode(TreeNode* root)
{
TreeNode* res=NULL;
int curLevel=1,preLevel=0;
DFSHelper(root, res, curLevel, preLevel);
//BFSHelper(root, res);
return res;
}
//Time O(n) space 不算递归栈则O(1) 算的话 O(lgn)
void DFSHelper(TreeNode* root, TreeNode* &res, int & curLevel, int &
preLevel)
{
if(root)
{
if(curLevel>preLevel)
{
res = root;
preLevel++;
}
curLevel++;
DFSHelper(root->right, res, curLevel, preLevel);
DFSHelper(root->left, res, curLevel, preLevel);
curLevel--;
}
}
//Time O(n) space O(n)
void BFSHelper(TreeNode* root, TreeNode* &res)
{
int curLevelNum,nextLevelNum;
queue q;
TreeNode* tmp;
if(!root) return;
q.push(root);
curLevelNum = 1;
nextLevelNum = 0;
while(!q.empty())
{
tmp = q.front();
q.pop();
curLevelNum--;
if(tmp->left)
{
q.push(tmp->left);
nextLevelNum++;
}
if(tmp->right)
{
q.push(tmp->right);
nextLevelNum++;
}
if(!curLevelNum)
{
if(nextLevelNum)
{
curLevelNum=nextLevelNum;
nextLevelNum=0;
}
else
{
res = tmp;
}
}
}
}

【在 l****p 的大作中提到】
: 第一通电话:
: 听口音应该是老印的,有点口音,面试过程中好几次我都没听清反复问。
: 上来没寒暄几句就写代码:
: 找出一个树中最深的结点。
: 明显留了好多细节让我问,于是我开始clarify:
: 1. 是不是binary tree。答:good question, yes, assume it's a binary tree
: 2. 是不是balanced binary tree。答:does that matter? 我边想边说,好像没关系
: 然后我再也想不出其它问题了。开始想算法。想一半,他才提醒我说还有一个细节我没
: 问:如果有多个最深结点怎么办。回答是返回最右的。这是一个失分的点
: 然后解释算法,可以用深度优先遍历也可以用广度优先遍历,记录所有叶节点的深度,

avatar
x*7
20
平均就是美。

【在 l**********o 的大作中提到】
: 一般般!
avatar
d*g
21
同样的感觉,边讲边写就会花很长时间。。
avatar
e*o
22
哪位能不用递归写一下DFS么?

【在 h****n 的大作中提到】
: 第一题,随手写了DFS和BFS,请指教
: TreeNode* GetDeepestNode(TreeNode* root)
: {
: TreeNode* res=NULL;
: int curLevel=1,preLevel=0;
: DFSHelper(root, res, curLevel, preLevel);
: //BFSHelper(root, res);
: return res;
: }
: //Time O(n) space 不算递归栈则O(1) 算的话 O(lgn)

avatar
h*n
23
用个stack即可不过不太好记录depth

哪位能不用递归写一下DFS么?
★ Sent from iPhone App: iReader Mitbbs Lite 7.56

【在 e******o 的大作中提到】
: 哪位能不用递归写一下DFS么?
avatar
p*2
24
两道题都没答好。可见做leetcode是多么的重要了。
avatar
p*2
25

stack有size吧。

【在 h****n 的大作中提到】
: 用个stack即可不过不太好记录depth
:
: 哪位能不用递归写一下DFS么?
: ★ Sent from iPhone App: iReader Mitbbs Lite 7.56

avatar
h*u
26
mark
avatar
h*n
27
leetcode的题做过一遍了,最近想做点新题更新太慢了

【在 p*****2 的大作中提到】
: 两道题都没答好。可见做leetcode是多么的重要了。
avatar
p*2
28

做做其他OJ?

【在 h****n 的大作中提到】
: leetcode的题做过一遍了,最近想做点新题更新太慢了
avatar
h*n
29
topcoder?
貌似很难啊。。。

【在 p*****2 的大作中提到】
:
: 做做其他OJ?

avatar
s*z
31
如果树是unbalanced,一条线,为什么DFS 空间是lgn?

【在 h****n 的大作中提到】
: 第一题,随手写了DFS和BFS,请指教
: TreeNode* GetDeepestNode(TreeNode* root)
: {
: TreeNode* res=NULL;
: int curLevel=1,preLevel=0;
: DFSHelper(root, res, curLevel, preLevel);
: //BFSHelper(root, res);
: return res;
: }
: //Time O(n) space 不算递归栈则O(1) 算的话 O(lgn)

avatar
l*b
32
递归本身就不是O(1)空间吧?
如果一个节点可以找到parent 并确定自己在左边还是右边。就不用记录任何信息了

【在 d**e 的大作中提到】
: 1 - 应该是O(1)空间吧,前缀递归遍历
avatar
l*p
33
确实是,本来第二道还答得沾沾自喜,一看版上的代码才知道原来还有差距。唉,不抱
希望了,再练一年,明年继续

【在 p*****2 的大作中提到】
: 两道题都没答好。可见做leetcode是多么的重要了。
avatar
l*p
34
嗯,没错,这是worst case。面试官问我balanced和unbalanced有什么影响时我居然答
不上来,又一个失分点啊

【在 s**********z 的大作中提到】
: 如果树是unbalanced,一条线,为什么DFS 空间是lgn?
avatar
h*n
35
恩 疏忽了

如果树是unbalanced,一条线,为什么DFS 空间是lgn?
★ Sent from iPhone App: iReader Mitbbs Lite 7.56

【在 s**********z 的大作中提到】
: 如果树是unbalanced,一条线,为什么DFS 空间是lgn?
avatar
h*n
36
size和depth的关系是什么的?想不出来二爷指教

stack有size吧。
★ Sent from iPhone App: iReader Mitbbs Lite 7.56

【在 p*****2 的大作中提到】
:
: 做做其他OJ?

avatar
c*7
37
写了个第一题的DFS的非递归解法, 请高手多指教
public static TreeNode findDeepestNode(TreeNode root){
if(root ==null) return root;
int maxDepth = 1;
TreeNode deepestNode = root;
// The previous node we just traversed
TreeNode preNode=null;
// The top item in the stack
TreeNode curNode;
Stack nodeStack = new Stack();
nodeStack.push(root);
// exit until the stack is empty
while(!nodeStack.isEmpty()){
// check the top item of the stack
curNode = nodeStack.peek();
// if it is traversing from parent
// to either leftChild or rightChild
if(preNode==null || preNode.left == curNode || preNode.right ==
curNode){
// if the curNode has leftChild
if(curNode.left!=null){
// push the leftChild to stack
nodeStack.push(curNode.left);
// every time when you push a node, check
// to see if the newly pushed node is
// the deepest node
if (nodeStack.size()>=maxDepth){
// update the variables
maxDepth = nodeStack.size();
deepestNode = curNode.left;
}
}
else if(curNode.right!=null){
nodeStack.push(curNode.right);
// every time when you push a node, do the check
if (nodeStack.size()>=maxDepth){
maxDepth = nodeStack.size();
deepestNode = curNode.right;
}
}else // if the curNode is a leaf, pop it from the stack
nodeStack.pop();
}else if(preNode==curNode.left){
// if the leftChild of the curNode
// has just been traversed, then move to rightChild
if(curNode.right!=null){
// push the rightChild to stack
nodeStack.push(curNode.right);
// check to see if the newly pushed
// node is the deepest node
if (nodeStack.size()>=maxDepth){
maxDepth = nodeStack.size();
deepestNode = curNode.right;
}
}
}else //(preNode==curNode.right){
// if both leftChild and rightChild
// have been visited
nodeStack.pop();
// update the preNode
preNode = curNode;
}
return deepestNode;
}
avatar
r*c
38
intern过了以后也要看运气,有没有组要你
有些组直接找合作教授的学生

【在 l****p 的大作中提到】
: 第一通电话:
: 听口音应该是老印的,有点口音,面试过程中好几次我都没听清反复问。
: 上来没寒暄几句就写代码:
: 找出一个树中最深的结点。
: 明显留了好多细节让我问,于是我开始clarify:
: 1. 是不是binary tree。答:good question, yes, assume it's a binary tree
: 2. 是不是balanced binary tree。答:does that matter? 我边想边说,好像没关系
: 然后我再也想不出其它问题了。开始想算法。想一半,他才提醒我说还有一个细节我没
: 问:如果有多个最深结点怎么办。回答是返回最右的。这是一个失分的点
: 然后解释算法,可以用深度优先遍历也可以用广度优先遍历,记录所有叶节点的深度,

avatar
l*p
39
Host matching失败是直接拒了还是等下一个quarter再match?

【在 r****c 的大作中提到】
: intern过了以后也要看运气,有没有组要你
: 有些组直接找合作教授的学生

avatar
b*u
40
如果你用iterative的post order,每push一个tree node,stack的size对应就是当前
tree node的depth

【在 h****n 的大作中提到】
: size和depth的关系是什么的?想不出来二爷指教
:
: stack有size吧。
: ★ Sent from iPhone App: iReader Mitbbs Lite 7.56

avatar
l*p
41
今天接到通知,我通过了这轮的面试,尽管有上述诸多失分点。看来Google的第一轮面
试果然很随机
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。