[职场感言] 工作一年了,聊聊三件事

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 4148|回复: 47
收起左侧

Google 电面

[复制链接] |试试Instant~ |关注本帖
happysshao 发表于 2014-10-25 10:49:44 | 显示全部楼层 |阅读模式

2014(10-12月) 码农类General 硕士 全职@Google - Other - 技术电面  | Other |

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
新鲜出炉的google 电面
-google 1point3acres
上来就是一个比较有难度的题目,感觉悲剧的节奏

Use the shorest unique prefix to represent each word in the array
input: ["zebra", "dog", "duck",”dot”]
output: {zebra: z, dog: do, duck: du}. more info on 1point3acres

[zebra, dog, duck, dove]
{zebra:z, dog: dog, duck: du, dove: dov}

[bearcat, bear]
{bearcat: bearc, bear: ""}
. 1point3acres

我说用prefix tree来做吧,他说这是最优解,但是感觉45min写不完,说可以brute force.

.本文原创自1point3acres论坛


评分

4

查看全部评分

Interviwer 发表于 2014-10-28 02:23:34 | 显示全部楼层
其实45min 是可以写完的,只实现insert 和 min prefix就行了
  1. #include<iostream>
  2. #include<vector>
  3. #include<string>
  4. using namespace std;

  5. class Node {
  6. public:
  7.     bool is_word;
  8.     int count;. from: 1point3acres
  9.     vector<Node*> children;

  10.     Node() {
  11.         is_word = false;.本文原创自1point3acres论坛
  12.         count = 0;
  13.         for(int i = 0; i < 26; i ++) {
  14.             children.push_back(NULL);
  15.         }   .留学论坛-一亩-三分地
  16.     }   

  17.     void insert(string word) {
  18.         count ++; . Waral 博客有更多文章,
  19.         if(word.size() == 0) {
  20.             is_word = true;
  21.             return;
  22.         }   . 1point3acres
  23.         int tmp = word[0]-'a';
  24.         if(children[tmp] == NULL) {
  25.             children[tmp] = new Node();
  26.         }   
  27.         children[tmp]->insert(word.substr(1));
  28.     }   

  29.     string minPrefix(string word) {
  30.         if(word.size() == 0 || count == 1) {
  31.             return ""; . more info on 1point3acres
  32.         }   
  33.         string rst;
  34.         rst.push_back(word[0]);
  35.         rst += children[word[0]-'a']->minPrefix(word.substr(1));
  36.         return rst;
  37.     }   
  38. };

  39. int main() {
    .留学论坛-一亩-三分地
  40.     Node* root = new Node();
  41.     root->insert("zebra");
  42.     root->insert("dog");
  43.     root->insert("duck");
  44.     root->insert("dot");

  45.     cout << root->minPrefix("zebra") << endl;
  46.     cout << root->minPrefix("dog") << endl;. 牛人云集,一亩三分地
  47.     cout << root->minPrefix("duck") << endl;
  48.     cout << root->minPrefix("dot") << endl;.本文原创自1point3acres论坛
  49. }
复制代码
回复 支持 1 反对 0

使用道具 举报

wstjpu 发表于 2014-10-26 05:44:59 | 显示全部楼层
第一个例子?dot怎么表示?
回复 支持 反对

使用道具 举报

wstjpu 发表于 2014-10-26 05:46:11 | 显示全部楼层
第一个例子?dot怎么表示?
回复 支持 反对

使用道具 举报

sally216 发表于 2014-10-26 10:08:12 | 显示全部楼层
难道不是trie嘛
回复 支持 反对

使用道具 举报

byrlhb 发表于 2014-10-26 10:39:32 | 显示全部楼层
感觉像是trie,用查询函数吧,如果找到一个节点的count是1,输出就可以了
回复 支持 反对

使用道具 举报

byrlhb 发表于 2014-10-26 10:44:15 | 显示全部楼层
sorry,想错了,要更复杂一些
回复 支持 反对

使用道具 举报

Arthur2012 发表于 2014-10-26 11:58:25 | 显示全部楼层
请问lz可以多解释一下:
input: ["zebra", "dog", "duck",”dot”]
output: {zebra: z, dog: do, duck: du}
谢谢啦!
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

一剑终情 发表于 2014-10-26 12:26:20 | 显示全部楼层
第一个难度不是dog:dog, dot:dot么?
回复 支持 反对

使用道具 举报

 楼主| happysshao 发表于 2014-10-27 01:21:16 | 显示全部楼层
一剑终情 发表于 2014-10-26 12:26
第一个难度不是dog:dog, dot:dot么?

应该是这样的
回复 支持 反对

使用道具 举报

 楼主| happysshao 发表于 2014-10-27 01:22:46 | 显示全部楼层
Arthur2012 发表于 2014-10-26 11:58
请问lz可以多解释一下:
input: ["zebra", "dog", "duck",”dot”]
output: {zebra: z, dog: do, duck: d ...

应该是这样的
input: ["zebra", "dog", "duck",”dot”]
output: {zebra: z, dog: dog, duck: du,dot:dot}

就是找到最短的且唯一能够区别于其他单词的 前缀
回复 支持 反对

使用道具 举报

unclewang 发表于 2014-10-27 02:10:53 | 显示全部楼层
问一下,如果给的单词里有dog 也有dogg,他们的输出分别应该是什么呢?
回复 支持 反对

使用道具 举报

Arthur2012 发表于 2014-10-27 02:38:53 | 显示全部楼层
谢谢lz了,我感觉可以用trie tree做,PS电面不容易!
回复 支持 反对

使用道具 举报

xperzy 发表于 2014-10-27 05:08:24 | 显示全部楼层
思路是不是这样啊?
. 围观我们@1point 3 acres
扫一遍input array, 建一个trie(前缀树),搜到每个单词,向上查找,直到parent有大于一的children stop,当前node就是要找的结果。
e.g.. From 1point 3acres bbs
                                     ()
                                       |. From 1point 3acres bbs
                                    (d)
                                    /      \
                            (do)       (du)
                             /      \           \. 一亩-三分-地,独家发布
                    (dog) (dot) (duck).留学论坛-一亩-三分地
来源一亩.三分地论坛.
dot 向上 do有2 children,所以 dot本身就是结果
duck-->du-->d,d有2个children,所以du就是结果



回复 支持 反对

使用道具 举报

Arthur2012 发表于 2014-10-27 05:13:55 | 显示全部楼层
xperzy 发表于 2014-10-27 05:08
思路是不是这样啊?
来源一亩.三分地论坛.
扫一遍input array, 建一个trie(前缀树),搜到每个单词,向上查找,直到parent有 ...

请问:ab,abb,abbb这种情况怎么办,第一个word是后面word的一个前缀
回复 支持 反对

使用道具 举报

lixiang.xjtu 发表于 2014-10-27 05:48:28 | 显示全部楼层
byrlhb 发表于 2014-10-26 10:44
sorry,想错了,要更复杂一些
.1point3acres网
没错的。应该就是这样的。在Trie的每个中间节点加一个count field,插入的时候,count++,最后输出的时候,输出count为1的最高的那个点
回复 支持 反对

使用道具 举报

shinichish 发表于 2014-10-27 06:33:53 | 显示全部楼层
unclewang 发表于 2014-10-27 02:10
问一下,如果给的单词里有dog 也有dogg,他们的输出分别应该是什么呢?
-google 1point3acres
应该还是一样的把
回复 支持 反对

使用道具 举报

 楼主| happysshao 发表于 2014-10-27 11:55:30 | 显示全部楼层
xperzy 发表于 2014-10-27 05:08
思路是不是这样啊?

扫一遍input array, 建一个trie(前缀树),搜到每个单词,向上查找,直到parent有 ...

如何向上查找,难道你要建立双向的trie?
我当时也是提高这样的思路,但是感觉写不出来。。。
回复 支持 反对

使用道具 举报

 楼主| happysshao 发表于 2014-10-27 11:56:58 | 显示全部楼层
Arthur2012 发表于 2014-10-27 05:13 来源一亩.三分地论坛.
请问:ab,abb,abbb这种情况怎么办,第一个word是后面word的一个前缀
. 一亩-三分-地,独家发布
你给出的例子类似:
[bearcat, bear]
{bearcat: bearc, bear: ""}

所以应该是 abbb:abbb;abb:"";ab:""
回复 支持 反对

使用道具 举报

Arthur2012 发表于 2014-10-27 12:10:07 | 显示全部楼层
happysshao 发表于 2014-10-27 11:56
你给出的例子类似:

{bearcat: bearc, bear: ""}

谢谢lz,lz一定会拿到onsite的,人品这么好!
回复 支持 反对

使用道具 举报

 楼主| happysshao 发表于 2014-10-27 13:12:00 | 显示全部楼层
Arthur2012 发表于 2014-10-27 12:10
谢谢lz,lz一定会拿到onsite的,人品这么好!

谢谢了!
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-24 10:57

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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