一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 2671|回复: 41
收起左侧

G家Onsite

[复制链接] |试试Instant~ |关注本帖
cnsudo 发表于 2015-11-7 13:39:02 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 硕士 全职@Google - 内推 - Onsite |Otherfresh grad应届毕业生

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

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

x

1.解释就好: 如何用最少的bit来记录一副扑克牌的顺序(假设encoder和decoder都由你来设计). Waral 鍗氬鏈夋洿澶氭枃绔,
. 1point 3acres 璁哄潧
2 安卓手机密码有多少种组合
3 拿硬币问题。Follow up:每步拿哪个?
4.在一个排序的不重复的环形的链表里插入一个数。
5.Sliding Window Average. from: 1point3acres.com/bbs
6.LeetCode 253,求重叠最多的一个区间
7.给Node[] nodeList,每个node有int p_index表示它parent node在数组中的位置,parent node必在child node左边,root在第0个,其p_index为-1。问,remove第k个node和它的子树,并把剩下所有node按顺序尽量向左摆,剩下set null。TimeO(n)SpaceO(n) Follow up:TimeO(1)?.1point3acres缃



补充内容 (2015-11-8 06:01):
最后一题写错了,followup是如果spaceO(1)怎么做。。Time是多少

补充内容 (2015-11-8 06:11):
第一题就是permutation,答案是log2(54!)向上取整。. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

补充内容 (2015-11-12 05:17):
今天11.11 HR发邮件说HC那边Green Light了

评分

5

查看全部评分

本帖被以下淘专辑推荐:

RagingSword 发表于 2015-11-8 09:30:34 | 显示全部楼层
第一题理论最小log2(52!) = 226
  1. import java.math.BigInteger;
  2. import java.util.ArrayList;
  3. import java.util.LinkedList;
  4. import java.util.List;

  5. /**. 1point3acres.com/bbs
  6. * Created by eric on 2015-11-07.-google 1point3acres
  7. */
  8. public class Solution {
  9.     static int m = 52;
  10.     public static void main(String[] args){
  11.         int[] a = new int[m];
  12.         List<Integer> list = new ArrayList<>();
  13.         for(int i = 0; i < m; i++){
  14.             list.add(i);
  15.         }

  16.         // generate a deck of cards.
  17.         int max = m;
  18.         for(int i = 0; i < m; ++i, --max){. Waral 鍗氬鏈夋洿澶氭枃绔,
  19.             int index = (int)(Math.random() * max);
  20.             a[i] = list.remove(index);
  21.         }
  22. . From 1point 3acres bbs
  23. .鏈枃鍘熷垱鑷1point3acres璁哄潧
  24.         for(int i = 0; i < m; i++){
  25.             System.out.print(a[i] + " ");
  26.         }

  27.         String s = encode(a);
  28.         System.out.println();

  29.         System.out.println("s.length == " + s.length());. From 1point 3acres bbs
  30. . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  31.         int[] b = decode(s);

  32.         for(int i = 0; i < m; i++){
  33.             System.out.print(b[i] + " ");
  34.         } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  35.     }.鐣欏璁哄潧-涓浜-涓夊垎鍦

  36.     private static String encode(int[] a){
  37.         BigInteger big = new BigInteger("0"); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  38.         List<Integer> list = new ArrayList<>();
  39.         for(int i = 0; i < m; i++){
  40.             list.add(i);
  41.         }

  42.         int max = m;. From 1point 3acres bbs
  43.         for(int i = 0; i < m; i++, --max){. visit 1point3acres.com for more.
  44.             big = big.multiply(new BigInteger(String.valueOf(max)));
  45.             big = big.add(new BigInteger(String.valueOf(list.indexOf(a[i]))));
  46.             list.remove(list.indexOf(a[i]));
  47.         }
  48.         return big.toString(2);
  49.     }

  50.     private static int[] decode(String s){
  51.         List<Integer> list = new LinkedList<>();
  52.         for(int i = 0; i < m; i++){
  53.             list.add(i);. 1point3acres.com/bbs
  54.         }. 鍥磋鎴戜滑@1point 3 acres
  55.         BigInteger big = new BigInteger(String.valueOf(s), 2);
  56.         int[] index = new int[m];
  57.         index[m-1] = 0;
    鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  58.         for(int i = 2; i <= m; i++){
  59.             index[m-i] = big.mod(new BigInteger(String.valueOf(i))).intValue();
  60.             big = big.divide(new BigInteger(String.valueOf(i)));
  61.         }
  62.         int[] ret = new int[m];. From 1point 3acres bbs
  63.         for (int i= 0; i < m; i++){
  64.             ret[i] = list.remove(index[i]);
  65.         }. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  66.         return ret;
  67.     }. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  68. }
复制代码
回复 支持 3 反对 0

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 12:28:42 | 显示全部楼层
nelson16 发表于 2015-11-8 10:48
第一题上年也被问到了...完全不会答啊 楼主怎么答得

. From 1point 3acres bbs因为encoder和decoder自己定,所以给每种排序赋一个数值就行,如果除去大小王一共有52张牌,有52!种排序,只要log2(52!)向上取整个bit就可以实现。然后问题就是怎么实现,我没被follow up,因为这已经是我第一轮的第三题了他说知道想法就可以了。这是个permutation的问题,比如给每张牌赋个值,那第一个permutation就是 1,2,3,..50,51,52,第二个permutation就是 1,2,3,..50,52,51,最后一种就是52,51,50...3,2,1。zenefits oa 4的第二题有类似的思想。
回复 支持 1 反对 0

使用道具 举报

guoqinlong 发表于 2015-11-7 23:39:02 | 显示全部楼层
求教育~请问第5题moving average 如何考察和答案哈?在地里看到多次,但是还是我一直没有不会做囧。多谢!!
回复 支持 反对

使用道具 举报

ronaldo17 发表于 2015-11-8 02:35:52 | 显示全部楼层
最后一题constant time,觉得可以用这个list 来存preorder traversal,这样一个子树便是一个子list。但是删除还是没办法做到 O(1)。
lz怎么答的?
回复 支持 反对

使用道具 举报

hj867955629 发表于 2015-11-8 02:39:40 | 显示全部楼层
guoqinlong 发表于 2015-11-7 23:39
求教育~请问第5题moving average 如何考察和答案哈?在地里看到多次,但是还是我一直没有不会做囧。多谢! ...

保存一个sum值,超过了窗的大小就减掉窗里面第一个值
回复 支持 反对

使用道具 举报

hj867955629 发表于 2015-11-8 02:42:30 | 显示全部楼层
第一题是不是6个bit表示一张牌?第七题O(1)怎么做?祝楼主好运!
回复 支持 反对

使用道具 举报

宝贝忆彼岸 发表于 2015-11-8 02:52:52 | 显示全部楼层
请问lz第一题的解法,我是这样想的,每6 bit一组表示一张牌,前两位表示花色,后四位表示大小,不知道对不对
回复 支持 反对

使用道具 举报

marthew777 发表于 2015-11-8 03:05:14 | 显示全部楼层
1.解释就好: 如何用最少的bit来记录一副扑克牌的顺序  

-> each card needs 6 bits, 4 bits for 大小,2 bits for 花色; 6*54 = 324 bits 是这样嘛?

7.给Node[] nodeList,每个node有int p_index表示它parent node在数组中的 位置,parent node必在child node左边,root在第0个,其p_index为-1。问,remove第k个node和它的子树,并把剩下所有node按顺序尽量向左摆,剩下set null。 TimeO(n)SpaceO(n) Follow up:TimeO(1)?

->这题O(1)可以用hash map preprocess一下么,key 是 k, values 是子树的indexes,
回复 支持 反对

使用道具 举报

feierqi 发表于 2015-11-8 05:47:01 | 显示全部楼层
最后一题需要shuffle array,怎么可能constant time? 如果shuffle后需要update所有nodes的parentid,那就更不太可能了,如果是tree的话,知道parent,删除是可以是可以直接砍掉,但需要update array,我觉得不管怎么preprocess都不能O(1)
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:02:14 | 显示全部楼层
不好意思各位。。最后一题打错了,是SpaceO(1)。。。
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:02:35 | 显示全部楼层
feierqi 发表于 2015-11-8 05:47
最后一题需要shuffle array,怎么可能constant time? 如果shuffle后需要update所有nodes的parentid,那就 ...

是SpaceO(1)。sorry打错了
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:03:00 | 显示全部楼层
marthew777 发表于 2015-11-8 03:05
1.解释就好: 如何用最少的bit来记录一副扑克牌的顺序  

-> each card needs 6 bits, 4 bits for 大小,2 ...

最后一题是spaceO(1)。打错了sorry
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:03:21 | 显示全部楼层
hj867955629 发表于 2015-11-8 02:42. From 1point 3acres bbs
第一题是不是6个bit表示一张牌?第七题O(1)怎么做?祝楼主好运!

最后一题是spaceO(1),打错了sorry.。。
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:03:41 | 显示全部楼层
ronaldo17 发表于 2015-11-8 02:35
最后一题constant time,觉得可以用这个list 来存preorder traversal,这样一个子树便是一个子list。但是删 ...

最后一题是spaceO(1),打错了sorry
回复 支持 反对

使用道具 举报

christy.zhang 发表于 2015-11-8 06:08:58 | 显示全部楼层
求问楼主 第二题是图形密码么? 有多少种啊
回复 支持 反对

使用道具 举报

宝贝忆彼岸 发表于 2015-11-8 06:11:15 | 显示全部楼层
请问lz第4题怎么做呀?是不是要先找到循环入口点,然后再分段讨论?
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:12:40 | 显示全部楼层
marthew777 发表于 2015-11-8 03:05
1.解释就好: 如何用最少的bit来记录一副扑克牌的顺序  

-> each card needs 6 bits, 4 bits for 大小,2 ...

第一题就是permutation,log2(54!)向上取整
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:14:37 | 显示全部楼层
宝贝忆彼岸 发表于 2015-11-8 02:52
请问lz第一题的解法,我是这样想的,每6 bit一组表示一张牌,前两位表示花色,后四位表示大小,不知道对不 ...

面试这道题的时候,面试官先说了你这个解法,问我有什么优化,其实就是permutation的种类,一共有54!种,只要给每种附一个比特值,一共只要log2(54!)向上取整bit
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:21:52 | 显示全部楼层
christy.zhang 发表于 2015-11-8 06:08
求问楼主 第二题是图形密码么? 有多少种啊

第二题是图形密码,具体值手算算不来吧。。。我开始还以为他要我写通项式,想了十分钟,后来说只要写代码。。就是dfs,要注意有个特殊限制条件:比如只有当2已经在路径中时才能从1直接划到3。
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:30:57 | 显示全部楼层
宝贝忆彼岸 发表于 2015-11-8 06:11
请问lz第4题怎么做呀?是不是要先找到循环入口点,然后再分段讨论?

第四题就是一个loop,没有尾巴的,所以不用找入口点,只要对每个点p和其下个点q,讨论所有case就好了
回复 支持 反对

使用道具 举报

 楼主| cnsudo 发表于 2015-11-8 06:49:29 | 显示全部楼层
guoqinlong 发表于 2015-11-7 23:39
求教育~请问第5题moving average 如何考察和答案哈?在地里看到多次,但是还是我一直没有不会做囧。多谢! ...

差不多是这个意思吧. visit 1point3acres.com for more.

                               
登录/注册后可看大图

. more info on 1point3acres.com

2.pic.jpg
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-5 03:37

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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