推荐:数据科学课程和书籍清单以及培训讲座


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 617|回复: 3
收起左侧

谷歌2016 intern面经

[复制链接] |试试Instant~ |关注本帖
abcde_12345 发表于 2016-2-19 04:19:29 | 显示全部楼层 |阅读模式

() @ - -  |

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

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

x
两轮
1. asset ID to two groups, 2 restrictions:.鏈枃鍘熷垱鑷1point3acres璁哄潧
    1. all number in group a are even, all number in group b are i*3. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
    2. 数字必须在a和b中只出现一次.1point3acres缃
    比如a:2 4 6 8 10
          b:3 9 12. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
    给出a,bsize求lower bound of maximum,这里是12
2. a简单统计两个bitstring不同的bits
    b给一个棋局,判断当前是否有棋子被围住,简单DFS记录访问过的节点就行,一些简单的follow-up
楼主第一题当时一直在想DP解,不过后来经超级nice的国人大哥提醒应该写个checkValid的函数,binary search最小bound,哎。。。题刷多了,思维真的会僵化。
lxxxxxxx 发表于 2016-2-19 04:53:32 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
求问楼主第一题怎么做啊,想不太通.... 我现在唯一能想到的是 :重复的部分应该是  min [ (lenA * 2) % 3 , (lenB * 3) % 2] 然后再一个个接着去替换到这么多个元素..... 求指教checkValid 和binary search该怎么做啊
回复 支持 反对

使用道具 举报

 楼主| abcde_12345 发表于 2016-2-19 05:39:43 | 显示全部楼层
关注一亩三分地微博:
Warald
lxxxxxxx 发表于 2016-2-19 04:53. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
求问楼主第一题怎么做啊,想不太通.... 我现在唯一能想到的是 :重复的部分应该是  min [ (lenA * 2) % 3 , ...

// Here sizeA & sizeB are the required size of two groups
// num>=0 is the candidate anwser

bool checkValid(int num, int sizeA, sizeB){
   int twos = num/6*2+(num%6)/2; //  even number exclude 6s
   int threes = num/6 + (num%6)/3; // 3*i exclude 6s
   return ((num/2)>=sizeA && (num/3-max(0,(sizeA-twos))>=sizeB);
   // give all 6 to even group at first
   // then check whether second group still have enough 3*i
}

// iterate 1 To n to find the lower bound
// for acceleration, binary search, pow(i,2)
回复 支持 反对

使用道具 举报

lxxxxxxx 发表于 2016-2-19 10:01:19 | 显示全部楼层
abcde_12345 发表于 2016-2-19 05:39. 鍥磋鎴戜滑@1point 3 acres
// Here sizeA & sizeB are the required size of two groups
// num>=0 is the candidate anwser
. 1point3acres.com/bbs
有道理!谢谢楼主
不过还想请教的就是,binary search 的时候怎么确定上界呢,我就是在想1 - n,这个n怎么取比较合适.....
而且感觉也不需要从1开始,从Math.max(2 * lenA, 3 * lenB) 开始就行了


checkValid函数确实这样就够了!不需要一个个去试

不过你的checkValid函数这里
return ((num/2)>=sizeA && (num/3-max(0,(sizeA-twos))>=sizeB);

我在想你算出来了 twos, threes,

然后就可以算 sixs = num / 6
. 1point 3acres 璁哄潧
return  max( (lenA - twos) , 0 ) + max( (lenB - threes), 0) <= sixs 不知道可不可以?

回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-8-17 01:28

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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