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

facebook 实习 面经

全局:

2016(7-9月) 码农类General 硕士 实习@meta - 内推 - 技术电面  | | Fail | 应届毕业生

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

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

x
一个月前的fb一面

第一题:plus one原题

第二题:一个数组内
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
。lc上有类似题。

求大米~~~~~

评分

参与人数 4大米 +25 收起 理由
pnoxoxo + 2 很有用的信息!
gotta0625 + 3 感谢分享!
tommylin + 10
mzhqlh + 10 谢谢你的介绍!

查看全部评分


上一篇:Snapchat OA 20160126
下一篇:snapchat failed onsite 面经

本帖被以下淘专辑推荐:

推荐
cupcupcup 2016-2-19 04:48:32 | 只看该作者
全局:
第二题不是leetcode原题么,O(n), O(1)
话说怎么贴代码...


public boolean increasingTriplet(int[] nums) {
        if (nums == null || nums.length < 3) {return false;}
        int min = Integer.MAX_VALUE, max = Integer.MAX_VALUE;
        for (int n : nums) {
            if (n > max) { return true;}
            if (n > min) {
                max = n;
            } else {
                min = n;
            }
        }
        return false;
    }
回复

使用道具 举报

推荐
木易wen 2016-2-14 07:10:21 | 只看该作者
全局:
第二题用一个空间为3的栈就行吧?
将第一个元素进栈,loop一遍数组,如果当前元素比栈顶小的话就退栈知道栈顶元素比当前元素小或栈空并将该元素进栈。当栈满表示已经有三个升序元素,返回true就行,复杂度O(n), O(1)
回复

使用道具 举报

推荐
木易wen 2016-2-19 06:33:18 | 只看该作者
全局:
caofang1992 发表于 2016-2-19 00:09
这个是不是只能处理连续的情况,如果是2,4,1,7这种情况呢?求解答,谢谢

对的,我之前没有考虑这种情况。需要加上一个第二大的判断,当栈里的元素为2个的时候和第二大元素比较一下,小的话update。如果当前元素比第二大元素大的话返回true。感觉有点tricky了
  1. public boolean increasingTriplet(int[] nums) {
  2.         if(nums == null || nums.length < 3) return false;
  3.         
  4.         int mid = Integer.MAX_VALUE;
  5.         Stack <Integer> s = new Stack();
  6.         
  7.         s.push(nums[0]);
  8.         
  9.         for(int i = 1; i < nums.length; i++){
  10.             
  11.             while(!s.isEmpty() && s.peek() >= nums[i]){
  12.                 s.pop();
  13.             }
  14.             s.push(nums[i]);
  15.             
  16.             if(s.size() == 3 || s.peek() > mid) return true;
  17.             if(s.size() == 2) mid = Math.min(mid, s.peek());
  18.         }
  19.         
  20.         return false;
  21.     }
复制代码
回复

使用道具 举报

全局:
lz是内推么?还是自己网投的,大概多久能收到预约电话。
回复

使用道具 举报

🔗
 楼主| stanleyyyyy 2016-1-27 12:02:42 | 只看该作者
全局:
xiaozhuxiaozhu 发表于 2016-1-27 11:43
lz是内推么?还是自己网投的,大概多久能收到预约电话。

内推的 大概一两周
回复

使用道具 举报

🔗
singku 2016-1-27 13:38:44 | 只看该作者
全局:
实现了一下第二题的代码 应该可以跑
  1. int a, b, c, least;
  2. bool three_inscreasing(std::vector<int> nums)
  3. {
  4.     int n = nums.size();
  5.     if (n <= 2) return false;

  6.     int i = 1;
  7.     while (i < n && nums[i] < nums[i-1]) {
  8.         i++;
  9.     }

  10.     if (i == n-1) {
  11.         return false;
  12.     }

  13.     a = i-1;
  14.     b = i;
  15.     least = i-1;

  16.     for (i = i+1; i < n; i++) {
  17.         if (nums[i] < nums[least]) {
  18.             least = i;
  19.         }
  20.         if (nums[i] > nums[b]) {
  21.             c = i;
  22.             return true;
  23.         }
  24.         if (nums[i] < nums[b] && nums[i] > nums[a]) {
  25.             b = i;
  26.         } else if (nums[i] > nums[least] && nums[i] < nums[b]) {
  27.             a = least;
  28.             b = i;
  29.         }
  30.     }
  31.     return false;
  32. }
复制代码
回复

使用道具 举报

🔗
aangel 2016-1-27 16:22:28 | 只看该作者
全局:
singku 发表于 2016-1-27 13:38
实现了一下第二题的代码 应该可以跑

while (i < n && nums[i] < nums[i-1]) {
        i++;
    }

应改为 nums[i]<=nums[i-1]吧

补充内容 (2016-1-27 16:23):
nums[i]<=nums[i-1]
回复

使用道具 举报

🔗
singku 2016-1-27 21:59:01 | 只看该作者
全局:
aangel 发表于 2016-1-27 16:22
while (i < n && nums < nums) {
        i++;
    }

你说得没错
回复

使用道具 举报

🔗
goodluck888 2016-1-28 02:13:14 | 只看该作者
全局:
请问LZ, 是不连续的x y z吗?要求O(n)解法?
回复

使用道具 举报

🔗
 楼主| stanleyyyyy 2016-1-28 07:03:35 | 只看该作者
全局:
可以不连续的 应该用dp吧
回复

使用道具 举报

🔗
aangel 2016-1-29 02:13:35 | 只看该作者
全局:
stanleyyyyy 发表于 2016-1-28 07:03
可以不连续的 应该用dp吧

从左到右扫一遍,记下最小值,从右到左扫一遍,记下最大值
最后再从头到尾扫一遍,以每个点作为分割线,
也是O(n)时间,但是需要O(n)空间,
DP怎么做?
回复

使用道具 举报

🔗
songty11 2016-1-30 01:34:56 | 只看该作者
全局:
第二题这样是o(n)
  1. // bool lengthOfLIS(vector<int>& nums) {
  2. //     vector<int> res;
  3. //     for(int i=0; i<nums.size(); i++) {
  4. //         auto it = std::lower_bound(res.begin(), res.end(), nums[i]);
  5. //         if(it==res.end()) res.push_back(nums[i]);
  6. //         else *it = nums[i];
  7. //         if(res.size()>=3)
  8. //         return true;
  9. //     }
  10. //     return false;
  11. // }
复制代码
回复

使用道具 举报

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

本版积分规则

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