📣 独立日限时特惠: VIP通行证立减$68
123
返回列表 发新帖
楼主: raccoon
跳转到指定楼层
上一主题 下一主题
收起左侧

facebook intern 面经

🔗
songty11 2016-1-27 23:47:35 | 只看该作者
全局:
Jester_Z 发表于 2016-1-27 12:59
就怕是这个=  = 楼主能说说思路吗~~

我试着写了一下....
  1. int printtask2(string tasks,int coldTime) {
  2.   int n = tasks.size();

  3.   if (n == 0)
  4.     return 0;


  5.   unordered_map<char, int> map;

  6.   unordered_map<char, int> freq;
  7.   for (int task:tasks)
  8.     freq[task]++;

  9.   priority_queue<pair<char, int>, vector<pair<char, int>>, cmp2> Q;
  10.   for (auto it = freq.begin(); it != freq.end(); it++)
  11.     Q.push({it->first, it->second});

  12.   int mTime = 0;

  13.   vector<int> order;
  14.   while (!Q.empty()) {
  15.     priority_queue<pair<char, int>, vector<pair<char, int>>, cmp2> tmp;
  16.     auto task = Q.top();
  17.     Q.pop();
  18.     while (map.find(task.first) != map.end() && map[task.first] + coldTime > mTime &&!Q.empty())
  19.     {
  20.       tmp.push(task);
  21.       task = Q.top();
  22.       Q.pop();
  23.     }
  24.     if (map.find(task.first) == map.end() || map[task.first] + coldTime <= mTime)
  25.     {
  26.       map[task.first] = ++mTime;
  27.       if (task.second-- > 1)
  28.         Q.push(task);
  29.       cout << task.first << " ";
  30.     }
  31.     else
  32.     {
  33.       tmp.push(task);
  34.       task = tmp.top();
  35.       tmp.pop();
  36.       int prev = mTime;
  37.       mTime = max(mTime,map[task.first]+coldTime);
  38.       for(;prev<mTime;prev++)
  39.         cout<<" _ ";
  40.       map[task.first] = ++mTime;
  41.       if(task.second-->1)
  42.       Q.push(task);
  43.       cout << task.first<<" ";
  44.     }

  45.     while (!tmp.empty()) {
  46.       Q.push(tmp.top());
  47.       tmp.pop();
  48.     }

  49.   }
  50.   return mTime;
  51. }
复制代码

评分

参与人数 2大米 +11 收起 理由
marshmallow + 1 谢谢~
Jester_Z + 10 回答的很好!

查看全部评分

回复

使用道具 举报

🔗
三塘木 2016-1-28 05:23:33 | 只看该作者
全局:
用python写了一个不确定对不对,但是没用priority queue优化取频率最高的部分

  1. def taskSchedule2(self, tasks, cd):
  2.                 counter = collections.Counter(tasks)
  3.                 print counter
  4.                 cdHash = {}
  5.                 i = 0
  6.                 t = 0

  7.                 while i < len(tasks):
  8.                         flag = 0
  9.                         for j,freq in counter.most_common():
  10.                                 if (j not in cdHash or t - cdHash[j] > cd) and counter[j] > 0:
  11.                                         cdHash[j] = t
  12.                                         print str(j) + " ",
  13.                                         counter[j] -= 1
  14.                                         i += 1
  15.                                         flag = 1
  16.                                         break
  17.                         if flag == 0:
  18.                                 print "_ ",
  19.                         t += 1

  20.                 return t
复制代码

评分

参与人数 1大米 +10 收起 理由
Jester_Z + 10 感谢分享!

查看全部评分

回复

使用道具 举报

🔗
Howie 2016-1-28 05:43:38 | 只看该作者
全局:
Augustus 发表于 2016-1-27 04:08
去年年末就有同学说fb没坑了啥的。。。。。。这些人真是谣言散播者。。。

那是全职。。。
回复

使用道具 举报

🔗
nickboy 2016-1-28 05:52:30 | 只看该作者
全局:
內堆會收到確認信嗎?有的內推者好像是會forward resume給hr而已。
回复

使用道具 举报

🔗
 楼主| raccoon 2016-1-28 05:56:51 | 只看该作者
全局:
nickboy 发表于 2016-1-28 05:52
內堆會收到確認信嗎?有的內推者好像是會forward resume給hr而已。

不知道我找的小伙伴怎么推的,没有确认信,但是过了两三天就收到recruiter的联系邮件
回复

使用道具 举报

🔗
Huangxin 2016-1-28 11:39:18 | 只看该作者
全局:
楼主第二题能不能具体说下什么意思?
input: ABAABB
cooldown: 2 (don't repeat characters in this unit of time)
output: AB_AB
请问下cooldown这个2代表什么?为什么输出是AB_AB,这是下划线_是什么意思呢?
谢谢!
回复

使用道具 举报

🔗
 楼主| raccoon 2016-1-28 11:43:30 | 只看该作者
全局:
Huangxin 发表于 2016-1-28 11:39
楼主第二题能不能具体说下什么意思?
input: ABAABB
cooldown: 2 (don't repeat characters in this unit ...

那几句都是他当时写的,他没写完,output按他的要求应该是AB_AB_AB。cooldown就是相同task之间必须间隔的时间,所以对前三个task来说不可以ABA,只能AB_A,两个A之间要隔2,下划线就代表正在冷却(cool down)
回复

使用道具 举报

🔗
tmaconfire 2016-2-21 16:14:35 | 只看该作者
全局:
songty11 发表于 2016-1-27 23:47
我试着写了一下....

What is your comparator cmp2?
回复

使用道具 举报

🔗
wtcupup 2016-3-1 10:06:36 | 只看该作者
全局:
请问哪位大神有task scheduling这道题的java版solution c++的看不懂。。。
回复

使用道具 举报

全局:
有没有好心人 贴出java版的代码呀
回复

使用道具 举报

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

本版积分规则

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