一亩三分地论坛

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

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

谷歌2016 intern面经

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

() @ - -  |

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

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

x
两轮
1. asset ID to two groups, 2 restrictions:
    1. all number in group a are even, all number in group b are i*3
    2. 数字必须在a和b中只出现一次
    比如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.1point3acres缃
楼主第一题当时一直在想DP解,不过后来经超级nice的国人大哥提醒应该写个checkValid的函数,binary search最小bound,哎。。。题刷多了,思维真的会僵化。
lxxxxxxx 发表于 2016-2-19 04:53:32 | 显示全部楼层
求问楼主第一题怎么做啊,想不太通.... 我现在唯一能想到的是 :重复的部分应该是  min [ (lenA * 2) % 3 , (lenB * 3) % 2] 然后再一个个接着去替换到这么多个元素..... 求指教checkValid 和binary search该怎么做啊
回复 支持 反对

使用道具 举报

 楼主| abcde_12345 发表于 2016-2-19 05:39:43 | 显示全部楼层
lxxxxxxx 发表于 2016-2-19 04:53
求问楼主第一题怎么做啊,想不太通.... 我现在唯一能想到的是 :重复的部分应该是  min [ (lenA * 2) % 3 , ...
.1point3acres缃
// 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
. 1point3acres.com/bbs// for acceleration, binary search, pow(i,2)
回复 支持 反对

使用道具 举报

lxxxxxxx 发表于 2016-2-19 10:01:19 | 显示全部楼层
abcde_12345 发表于 2016-2-19 05:39
// Here sizeA & sizeB are the required size of two groups
// num>=0 is the candidate anwser

有道理!谢谢楼主. more info on 1point3acres.com
不过还想请教的就是,binary search 的时候怎么确定上界呢,我就是在想1 - n,这个n怎么取比较合适.....
而且感觉也不需要从1开始,从Math.max(2 * lenA, 3 * lenB) 开始就行了.鏈枃鍘熷垱鑷1point3acres璁哄潧


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

不过你的checkValid函数这里
return ((num/2)>=sizeA && (num/3-max(0,(sizeA-twos))>=sizeB);
.1point3acres缃
我在想你算出来了 twos, threes,
. 鍥磋鎴戜滑@1point 3 acres
然后就可以算 sixs = num / 6

return  max( (lenA - twos) , 0 ) + max( (lenB - threes), 0) <= sixs 不知道可不可以?. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-3 10:54

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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