回复: 19
跳转到指定楼层
上一主题 下一主题
收起左侧

Google 电面

全局:

2016(10-12月) 码农类General 硕士 实习@google - 内推 - 技术电面  | | Other | 应届毕业生

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
刚刚面完,分享经验攒人品。
interview 1 :
  面试官叫Jeremy Hoffman,美国人。
  介绍有趣的项目,针对项目问了些问题。
  code:
    1. input file,file中是一堆string,要求除去重复行并输出,A:map存每行,重复就
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
ton可以选择。
        combination的代码写完了,解释了很久才说懂他,后面处理的函数没有写完,说了思路写了些伪代码跟注释。

应该挂了,去吃点好的,晚上还得上课,大家加油。

评分

参与人数 2大米 +51 收起 理由
ShizuoZ + 1 感谢分享!
夏虫不知雪花 + 50

查看全部评分


上一篇:Uber电面跪
下一篇:Google 很简单的店面
推荐
xxxxx56789 2016-12-2 08:33:21 | 只看该作者
全局:
        第二题这样写不知道对不对

        public static  List<String>  buttonCombine(List<Integer> nums){
             List<String> re = new ArrayList<String>();
             boolean[] used = new boolean[nums.size()];
             help(re,0, new StringBuilder(), used, nums);
             return re;
        }
       
        public static void help( List<String> r,int level, StringBuilder sb, boolean[] used, List<Integer> nums){
            int size = nums.size();
            if(sb.length()!=0 && sb.charAt(sb.length()-1)!='-'){
                    StringBuilder newsb = new StringBuilder(sb);
                    r.add(newsb.toString());
            }
                if(level == size) return;
            for(int i=0; i<size; i++){
                        if(!used[i]){
                                used[i] = true;
                                sb.append(nums.get(i));
                                help(r,level+1, sb, used, nums);
                                sb.deleteCharAt(sb.length()-1);
                                if(level!=size-1){
                                        sb.append(nums.get(i)+"-");
                                        help(r,level+1, sb, used, nums);
                                        sb.delete(sb.length()-2, sb.length());
                                }
                                used[i] = false;
                        }
                }
        }
回复

使用道具 举报

全局:
按按钮,先组合,再全排,然后插 '-'
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;

  5. void CombButtons(string& buttons, int l, int r, int len,
  6.                  vector<string>& button_select, string path) {
  7.   if (path.size() == len)
  8.     button_select.push_back(path);
  9.   else {
  10.     for (int i = l; i <= r; i++) {
  11.       path += buttons[i];
  12.       CombButtons(buttons, i + 1, r, len, button_select, path);
  13.       path.erase(path.end() - 1);
  14.     }
  15.   }
  16. }

  17. void PermButtons(string& buttons, int l, int r, vector<string>& button_seq) {
  18.   if (l == r)
  19.     button_seq.push_back(buttons);
  20.   else {
  21.     for (int i = l; i <= r; i++) {
  22.       swap(buttons[i], buttons[l]);
  23.       PermButtons(buttons, l + 1, r, button_seq);
  24.       swap(buttons[i], buttons[l]);
  25.     }
  26.   }
  27. }

  28. void PressButtons(string buttons, int i, int n, vector<string>& res,
  29.                   string path) {
  30.   if (i == n)
  31.     res.push_back(path);
  32.   else {
  33.     path += buttons[i];
  34.     PressButtons(buttons, i + 1, n, res, path);
  35.     if (i + 1 < n) PressButtons(buttons, i + 1, n, res, path + '-');
  36.   }
  37. }

  38. int main(int argc, char const* argv[]) {
  39.   string buttons = "123";
  40.   int n = buttons.size();
  41.   vector<string> res;
  42.   vector<string> button_seq;
  43.   vector<string> button_select;
  44.   for (int len = 1; len <= n; len++)
  45.     CombButtons(buttons, 0, n - 1, len, button_select, "");
  46.   for (auto bs : button_select) PermButtons(bs, 0, bs.size() - 1, button_seq);
  47.   for (auto pb : button_seq) PressButtons(pb, 0, pb.size(), res, "");
  48.   for (auto r : res) cout << r << endl;
  49.   return 0;
  50. }
复制代码
回复

使用道具 举报

🔗
catinclay 2016-11-30 06:13:18 | 只看该作者
全局:
感觉应该是先求所有permutation, 然后再输出所有往中间插入'-'的方法
回复

使用道具 举报

🔗
 楼主| jpeng7 2016-11-30 07:26:31 | 只看该作者
全局:
catinclay 发表于 2016-11-30 06:13
感觉应该是先求所有permutation, 然后再输出所有往中间插入'-'的方法

我一开始也是这么做的,但是被面试官建议不这样做,因为我当时写的求combination是顺序有关的,不太好处理duplicate,求问怎么得到顺序无关的combination呀?
回复

使用道具 举报

🔗
 楼主| jpeng7 2016-11-30 07:27:28 | 只看该作者
全局:
catinclay 发表于 2016-11-30 06:13
感觉应该是先求所有permutation, 然后再输出所有往中间插入'-'的方法

说反了,我做的是顺序无关的,怎么求顺序相关呀?就是 既能得到321,又能有123
回复

使用道具 举报

🔗
catinclay 2016-11-30 07:28:33 | 只看该作者
全局:
jpeng7 发表于 2016-11-30 07:26
我一开始也是这么做的,但是被面试官建议不这样做,因为我当时写的求combination是顺序有关的,不太好处 ...

为什么面试官不建议这样作呀...感觉这样就能不用处理duplicate的问题呀

补充内容 (2016-11-30 07:30):
顺序无关的combination 就是所有combination下去作permutation

补充内容 (2016-11-30 07:31):
我也說反了..
回复

使用道具 举报

🔗
 楼主| jpeng7 2016-11-30 07:31:34 | 只看该作者
全局:
catinclay 发表于 2016-11-30 07:28
为什么面试官不建议这样作呀...感觉这样就能不用处理duplicate的问题呀

假设我们有三个button,我的combination求的结果是{{1,2,3},{1,2},{1,3},{2,3},{1},{2},{3}},但是其实还要有{3,2,1},{3,1,2}啊等等的,这个我不会怎么求。
回复

使用道具 举报

🔗
catinclay 2016-11-30 07:33:53 | 只看该作者
全局:
jpeng7 发表于 2016-11-30 07:31
假设我们有三个button,我的combination求的结果是{{1,2,3},{1,2},{1,3},{2,3},{1},{2},{3}},但是其实还 ...

假设三个button
所有permutation:
123
132
213
231
312
321

所有'-'的插入法
000
0-00
00-0
0-0-0

把这4种插入法跟上面6种permutation全部交叉产生结果就会是所有的方法

补充内容 (2016-11-30 07:36):
也就是
123, 1-23, 12-3, 1-2-3
132, 1-32, 13-2, 1-3-2
213, 2-13, 21-3, 2-1-3
231, 2-31, 23-1, 2-3-1
312, 3-12, 31-2, 3-1-2
321, 3-21, 32-1, 3-2-1
回复

使用道具 举报

🔗
 楼主| jpeng7 2016-11-30 07:36:10 | 只看该作者
全局:
catinclay 发表于 2016-11-30 07:33
假设三个button
所有permutation:
123

嗯不仅要permutation,还需要combination,因为可以不用到所有button,嗯,难道先求到所有的combination然后再分别求permutation?好像也可以。
回复

使用道具 举报

🔗
catinclay 2016-11-30 07:37:30 | 只看该作者
全局:
jpeng7 发表于 2016-11-30 07:36
嗯不仅要permutation,还需要combination,因为可以不用到所有button,嗯,难道先求到所有的combination ...

恩 先combination再permutation, 挺麻烦的 以为全部的button都要用到

补充内容 (2016-11-30 07:38):
如果是这样的话 用back-tracking好像会比较快
回复

使用道具 举报

🔗
 楼主| jpeng7 2016-11-30 07:39:47 | 只看该作者
全局:
catinclay 发表于 2016-11-30 07:37
恩 先combination再permutation, 挺麻烦的 以为全部的button都要用到

补充内容 (2016-11-30 07:38):

但是这样比我那个方法直观简单多了……我那个还得在循环里面调用递归……哎。anyway,谢谢指教~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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