一亩三分地论坛

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

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

Facebook电面

[复制链接] |试试Instant~ |关注本帖
tanpf5 发表于 2016-1-8 18:28:07 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类 硕士 实习@Facebook - 内推 -  |Other其他

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

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

x
能约的最早的日子已经在国内了,所以就约了加州时间4点开始,也就是今天早上8点的。挺珍惜这个机会的结果就是昨天11点半睡到两点醒了就再也睡不着了。
接电话一听是个三哥,先让做了自我介绍然后开始码题。
第一道check if there is a subarray sum equals x,题不难结果最后边界条件出了问题,改了一下又出问题了,结果三哥直接说下一题,我又强行改了一下当时也不知道对不对。.鏈枃鍘熷垱鑷1point3acres璁哄潧
然后第二题就很慌一直心神不宁,第二题是leetcode的那道search in 2d matrix,这题我没做过不过刷题的时候印象中有类似的名字的题。当时心绪还一直停留在第一题,也忘了去leetcode查了,后来写的也一团糟。
.鐣欏璁哄潧-涓浜-涓夊垎鍦面完真是崩溃了,感觉我面试最糟糕的一次,估计是必挂了。实在不愿面对这个现实,所以过了大半天才有勇气发这个面经

补充内容 (2016-1-9 07:45):
第二题搞错了,不是search in 2d matrix。其实有点像第一题的follow up,把search sum从一维变到二维,subarray变成sub rectangle

评分

5

查看全部评分

luofeidream 发表于 2016-1-17 09:35:29 | 显示全部楼层
ohyline 发表于 2016-1-16 05:16
第二题可以用第一种方法 做成O(n^2)
先算个cumulative matrix (每一个元素就是从左上角到当前元素的sub ...

有个问题哦,为什么sum > target反而要扩大submatrix的范围呢,这时候不是应该缩小吗
回复 支持 2 反对 0

使用道具 举报

xuweineo 发表于 2016-1-8 18:36:06 | 显示全部楼层
擦。。摸摸谭神
回复 支持 反对

使用道具 举报

eonian 发表于 2016-1-12 08:13:54 | 显示全部楼层
好难啊。。follow-up有什么解法么0.0
回复 支持 反对

使用道具 举报

gjxwin 发表于 2016-1-13 11:07:45 | 显示全部楼层
lz有消息了吗
回复 支持 反对

使用道具 举报

Howie 发表于 2016-1-13 17:16:53 | 显示全部楼层
http://www.geeksforgeeks.org/find-subarray-with-given-sum/
第一题是这个?
回复 支持 反对

使用道具 举报

Howie 发表于 2016-1-13 18:50:52 | 显示全部楼层
搞个map 存一下子数组的和,算到sum[j]的时候,看看 满足sum[j] - sum[i]的值是不是出现过。
二维,类似。。扫一遍,存[0][0]到[i][j],然后加加减减,算出来子矩阵的和。。就是写起来 麻烦  二维的应该不用 写代码
回复 支持 反对

使用道具 举报

ohyline 发表于 2016-1-15 05:40:20 | 显示全部楼层
楼主, 我刚刚跟你遇到了完全一样的情况!!!题目一样, 三哥也一样。没啥耐心,第二题你做出来了么,我只写出了bruteforce(On^4)。。。被鄙视了啊 你结果出来了么
回复 支持 反对

使用道具 举报

 楼主| tanpf5 发表于 2016-1-15 23:03:46 | 显示全部楼层
Howie 发表于 2016-1-13 17:16
http://www.geeksforgeeks.org/find-subarray-with-given-sum/
第一题是这个?

第一题类似吧,主要是要考虑sum = 0的时候的边界条件
回复 支持 反对

使用道具 举报

 楼主| tanpf5 发表于 2016-1-15 23:05:18 | 显示全部楼层
ohyline 发表于 2016-1-15 05:40
楼主, 我刚刚跟你遇到了完全一样的情况!!!题目一样, 三哥也一样。没啥耐心,第二题你做出来了么,我只 ...

第二题不知道有啥好方法。到现在没结果早就不抱希望了
回复 支持 反对

使用道具 举报

ohyline 发表于 2016-1-16 05:16:00 | 显示全部楼层
tanpf5 发表于 2016-1-15 23:05
第二题不知道有啥好方法。到现在没结果早就不抱希望了
.鏈枃鍘熷垱鑷1point3acres璁哄潧
第二题可以用第一种方法 做成O(n^2)
先算个cumulative matrix (每一个元素就是从左上角到当前元素的submatrix的和)。用这个matrix我们可以用O(1)算出任意两点间确定的submatrix的和。建立这个matrix用O(n^2).
之后我们用recursive。 基本想法就是 return submatrixsum(cumMatrix,0,0,0,0). 1point3acres.com/bbs
bool submatrixsum(vector<vector<int>>& cum,
int headi,int headj,int taili,int tailj, int target){
if(headi<taili||headj<tailj) return false;
int sum = subsum(cum,headi,headj,taili,tailj, int target);
if(sum==target) return true;.鐣欏璁哄潧-涓浜-涓夊垎鍦
else if(sum>target) return submatrixsum(cum,headi,headj,taili+1,tailj,target)||submatrixsum(cum,headi,headj,taili,tailj+1,target);
else return submatrixsum(cum,headi+1,headj,taili,tailj,target)||submatrixsum(cum,headi,headj+1,taili,tailj,target);

回复 支持 反对

使用道具 举报

dylanwen 发表于 2016-1-16 05:17:40 | 显示全部楼层
ohyline 发表于 2016-1-16 05:16.1point3acres缃
第二题可以用第一种方法 做成O(n^2)
先算个cumulative matrix (每一个元素就是从左上角到当前元素的sub ...
. Waral 鍗氬鏈夋洿澶氭枃绔,
非常聪明的解法。感觉这个老印不厚道,这题目不是一下就能想到的。
回复 支持 反对

使用道具 举报

Howie 发表于 2016-1-16 06:41:06 | 显示全部楼层
ohyline 发表于 2016-1-16 05:16
第二题可以用第一种方法 做成O(n^2). 鍥磋鎴戜滑@1point 3 acres
先算个cumulative matrix (每一个元素就是从左上角到当前元素的sub ...

就是这样做呀。跟一唯的思想类似。都差不多等于先预处理一遍数组,然后利用子数组和的差值算某个子数组的和。
回复 支持 反对

使用道具 举报

Gianluigi 发表于 2016-1-19 06:42:56 | 显示全部楼层
ohyline 发表于 2016-1-16 05:16
第二题可以用第一种方法 做成O(n^2)
先算个cumulative matrix (每一个元素就是从左上角到当前元素的sub ...

这样有可能陷入死循环。如果 target 刚好在 [start,end] 和 [start,end+1] 之间,那么这个 dfs 会一直往下搜,不断地在两个区间内跳。
回复 支持 反对

使用道具 举报

goodluck888 发表于 2016-1-29 13:23:44 | 显示全部楼层
ohyline 发表于 2016-1-16 05:16
第二题可以用第一种方法 做成O(n^2)
先算个cumulative matrix (每一个元素就是从左上角到当前元素的sub ...

请问一下这个递归的复杂度是O(n^2)吗
回复 支持 反对

使用道具 举报

Gianluigi 发表于 2016-1-29 13:42:43 | 显示全部楼层
goodluck888 发表于 2016-1-29 13:23
请问一下这个递归的复杂度是O(n^2)吗

复杂度应该是 O(n^3) ?跟 1D 一样,暴力是 O(n^2),hashmap 可以减少一个n;二维是 O(n^4),用 hashmap 可以减少一个 n,变成 n^3
回复 支持 反对

使用道具 举报

goodluck888 发表于 2016-1-30 01:21:44 | 显示全部楼层
Gianluigi 发表于 2016-1-29 13:42
复杂度应该是 O(n^3) ?跟 1D 一样,暴力是 O(n^2),hashmap 可以减少一个n;二维是 O(n^4),用 hashmap  ...

假如第一维度用暴力,第二纬度是1D做法的话感觉是O(N^3)?
两个维度的复杂度都减了,为啥还是n^3呢?
回复 支持 反对

使用道具 举报

Gianluigi 发表于 2016-1-30 01:35:27 | 显示全部楼层
goodluck888 发表于 2016-1-30 01:21
假如第一维度用暴力,第二纬度是1D做法的话感觉是O(N^3)?
两个维度的复杂度都减了,为啥还是n^3呢?

对的,第二个维度用 1D 的做法,就是用了 hashmap 呀。
回复 支持 反对

使用道具 举报

Jester_Z 发表于 2016-1-30 08:18:15 | 显示全部楼层
想问一下楼主 这里面可能有负数吗
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-6 13:46

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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