Homebrew 的作者被 Google 拒啦,因为他不会翻转二叉树

2015-06-11 12:01:06 +08:00
 nowcoder

Homebrew 的作者被 Google 拒啦,因为他不会翻转二叉树,然后作者在twitter上开骂啦,然后很多公司开始抢人了。

你来挑战一下翻转二叉树吧
http://www.nowcoder.com/books/coding-interviews/564f4c26aa584921bc75623e48ca3011

非递归版本的答案如下:
http://www.nowcoder.com/questionTerminal/bcffd7e8a0d4402c99773bed98690bb7

23517 次点击
所在节点    程序员
89 条回复
ostholz
2015-06-11 15:04:37 +08:00
有一个回: brew install btree-invert
哈哈
yiplee
2015-06-11 15:08:50 +08:00
@hooluupog 其实他去面试前有准备,他自己在 Twitter 上面说的。
yiplee
2015-06-11 15:09:55 +08:00
@Qiangyuan 是 Twitter
bin456789
2015-06-11 15:21:04 +08:00
1417收藏,真励志
jhdxr
2015-06-11 15:27:11 +08:00
@nowcoder 排行居然混着c/c++和java。。。
eriale
2015-06-11 15:29:46 +08:00
fszaer
2015-06-11 15:34:40 +08:00
@phoenixlzx 呵呵呵呵
nbndco
2015-06-11 15:40:49 +08:00
顺带贴个解答吧,我觉得只有这个答案是理解了什么是数据结构的,问出这个问题的人感觉没有理解什么是数据结构。

https://news.ycombinator.com/item?id=9697008

It can't be just mirroring, because there's the obvious zero-op solution because "left" and "right" don't actually mean anything except when you're visualizing it for humans:
struct NormalNode {
int value;
struct NormalNode *left;
struct NormalNode *right;
};

struct ReversedNode {
int value;
struct ReversedNode *right;
struct ReversedNode *left;
};

struct ReversedNode *reverseTree(struct NormalNode *root) {
return (struct ReversedNode *)root;
}
There. Now left is right and right is left.
21grams
2015-06-11 16:46:28 +08:00
哈哈,楼上的这个太牛了。
heqichang
2015-06-11 16:50:22 +08:00
@nbndco 我x, 这是个好想法
xhjsxw
2015-06-11 16:50:23 +08:00
刷一遍newcoder就会了
201314
2015-06-11 16:53:46 +08:00
要想会这个题,去牛客刷题哦!!
raincious
2015-06-11 17:01:04 +08:00
@nbndco

最牛的答案出现了,直接改名……
cdwind
2015-06-11 17:11:55 +08:00
这写不出来太不应该了吧,写个递归半分钟的事情。。。

class Solution {
public:
void Mirror(TreeNode *pRoot) {
if (!pRoot)
return;
TreeNode *tmp = pRoot->right;
pRoot->right = pRoot->left;
pRoot->left = tmp;
Mirror(pRoot->right);
Mirror(pRoot->left);
}
};

答案正确:恭喜!您提交的程序通过了所有的测试用例
cdwind
2015-06-11 17:14:12 +08:00
@cdwind 要求非递归啊。。。
cdwind
2015-06-11 17:29:57 +08:00
@cdwind
用堆栈模拟下递归..

class Solution {
private:
stack<TreeNode*> mStack;
public:
void Mirror(TreeNode *pRoot) {
mStack.push(pRoot);
while (!mStack.empty()){
TreeNode *rpRoot = mStack.top();
mStack.pop();
if (!rpRoot)
continue;
TreeNode *tmp = rpRoot->right;
rpRoot->right = rpRoot->left;
rpRoot->left = tmp;
mStack.push(rpRoot->right);
mStack.push(rpRoot->left);
}
}
};
initialdp
2015-06-11 17:45:51 +08:00
把Homebrew卖给google,然后雇佣那个家伙让他天天在白板上反转。
ehs2013
2015-06-11 17:50:04 +08:00
@initialdp 那我还是去用 MacPorts 吧……
lsgbhp
2015-06-11 17:58:11 +08:00
没人说Max Howell面的是iOS的职位么
fulvaz
2015-06-11 18:48:08 +08:00
会不会根本不是关键问题

只是因为筛选简单

比如说,好多企业要求985毕业学生,然而他的岗位其实普通大专生就可以了,那为什么还要设置985要求?
设门槛嘛,985有垃圾,大专也有大师,但是很明显985里面更找到靠谱的人几率更大,节约筛选时间.

同理,现在很多公司都有一个恶习就是考算法,都是在设置门槛,很明显,会算法的人里面找到靠谱的几率也很大,看清楚,--> 是几率大 <-----,还是有坑

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

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

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

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

© 2021 V2EX