12
返回列表 发新帖
楼主: 南若冲
跳转到指定楼层
上一主题 下一主题
收起左侧

Facebook 电面

🔗
 楼主| 南若冲 2015-3-12 13:41:59 | 只看该作者
全局:
wyni18 发表于 2015-3-12 04:45
我好像太弱了,题目都看不太懂。。是要我们返回什么呢

应该是我表达不清楚 要我们返回执行任务的时间 或者就是那个按照这个规则输出的数组的长度
回复

使用道具 举报

🔗
wyni18 2015-3-13 09:00:29 | 只看该作者
全局:
南若冲 发表于 2015-3-12 13:41
应该是我表达不清楚 要我们返回执行任务的时间 或者就是那个按照这个规则输出的数组的长度

谢谢楼主
回复

使用道具 举报

🔗
yuxrose 2015-3-16 14:16:27 | 只看该作者
全局:
lz, 我看到另一个帖子也报的这题说还有一个follow up,如果N不是fixed,是variable怎么办,你被问了这个follow up吗?不知是怎么答的?
回复

使用道具 举报

🔗
linmeng44 2015-3-20 02:16:01 | 只看该作者
全局:
不知道怎么顶贴啊.. 只能在这里回复了..刚刚面完的这道题.. 感谢楼主的分享.. 也就不单独发帖了
之前看到的这道题, 但是没有动手做, 只是大概想了一下思路, 但是面到见过的题目,心里还是一稳
面试过程就是随便聊两句简历,问问我为毛对Facebook感兴趣,然后就开始直接做题
我写完基本大框架之后,他让我进一步优化自己的code, 然后我就跟他讲这个code还能怎么优化,优化到最后会只有一个case, 剩下的情况都会是一样的..
自己的code就不贴出来丢人了, 但是我感觉最重要的部分是communication和思路的清晰, 然后code写出来要clean, 同时要写得快
全程当玩了一个小时了,也不求onsite, 祝大家面试goodluck了
回复

使用道具 举报

🔗
dennyrong 2015-3-20 12:19:46 | 只看该作者
全局:
public int execTime(int[] task, int N) {
    if(task==null || task.length==0)
        return 0;
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    int res = 0;
    int i =0;
    while(i<task.length) {
        if(!map.containsKey(task[i])) {
            map.put(task[i], i+res);
            i++;
        }else {
            int index = map.get(task[i]);
            if(i+res-index<=N) {
                res++;
            }else {
                map.put(task[i],i+res);
                i++;
            }
        }
    }
    return i+res;
}
回复

使用道具 举报

🔗
yanguango 2015-5-2 08:07:26 | 只看该作者
全局:
写了一下
  1. #include <vector>
  2. #include <iostream>
  3. #include <unordered_map>
  4. #include <cassert>
  5. using namespace std;

  6. int runTask(vector<int> tasks, int n) {
  7.   int len = tasks.size();
  8.   if (len < 2) return len;

  9.   int time = 0;
  10.   unordered_map<int, int> mp;
  11.   for (int i = 0; i < len; i++) {
  12.     time++;
  13.     if (mp.find(tasks[i]) == mp.end()) {
  14.       mp[tasks[i]] = time;
  15.     } else {
  16.       if (time - mp[tasks[i]] < n + 1) {
  17.         time = mp[tasks[i]] + n + 1;
  18.         mp[tasks[i]] = time;
  19.       }
  20.     }
  21.   }

  22.   return time;
  23. }

  24. int main(int argc, char const *argv[]) {
  25.   assert(runTask(vector<int>{}, 3) == 0);
  26.   assert(runTask(vector<int>{1}, 3) == 1);
  27.   assert(runTask(vector<int>{1, 2, 1, 2}, 3) == 6);
  28.   assert(runTask(vector<int>{1, 2, 1, 2}, 2) == 5);
  29.   assert(runTask(vector<int>{1, 1, 1, 1}, 3) == 13);
  30.   assert(runTask(vector<int>{1, 1, 1, 1}, 1) == 7);
  31.   assert(runTask(vector<int>{1, 2, 1, 2}, 1) == 4);
  32. }
复制代码
回复

使用道具 举报

🔗
海岸线 2015-8-6 17:54:28 | 只看该作者
全局:
用一个map来存 task_id -> last finishing time

public int getExecTime(int[] tasks, int N) {
            if (tasks == null || tasks.length == 0) {
                return 0;
            }

            Map<Integer, Integer> map = new HashMap<>();

            int i = 0; // # of tasks finished
            int timeStamp = 0;

            while (i < tasks.length) {
                if (!map.containsKey(tasks[i])
                        || timeStamp - map.get(tasks[i]) > N) {

                    map.put(tasks[i], timeStamp);
                    i++;
                }
                timeStamp++;
            }
            return timeStamp;
        }
回复

使用道具 举报

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

本版积分规则

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