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

Facebook 电面

🔗
ericLaw 2016-3-31 07:54:25 | 只看该作者
全局:
shepherd001 发表于 2016-3-31 06:00
OK,那我觉得是题目本身描述的不是那么清楚,不过现在了解了,谢谢。
另外,cooldown=2的话,AA是2,那 ...

我是想说ABCA,手滑打错了。。。。
回复

使用道具 举报

🔗
jeremy_sea 2016-4-1 01:21:04 | 只看该作者
全局:
这题不就是从左到右扫一遍,然后数有几个相同的字母相邻吗?为什么要hashmap?
total_time = len(tasks) + 5*(number_of_same_task - 1)
如果这样的话未必有些太简单了吧。。。。还是我理解错了?
回复

使用道具 举报

🔗
z6403456 2016-4-1 01:59:02 | 只看该作者
全局:
不知道现在facebook还收不收人, 我听说都freaze了
回复

使用道具 举报

🔗
adiggo 2016-4-1 02:33:06 | 只看该作者
全局:
jeremy_sea 发表于 2016-4-1 01:21
这题不就是从左到右扫一遍,然后数有几个相同的字母相邻吗?为什么要hashmap?
total_time = len(tasks) + ...

我一开始 也是这样想的,  看来意思不是这样, 并不是字母相邻。 比如ABcA, cooldown 是5, 那么输出是ABC...A   所以用map记录上一次char出现的时间点。
回复

使用道具 举报

🔗
returning 2016-4-1 08:15:21 | 只看该作者
全局:
gigimei 发表于 2016-3-20 11:39
我用一个HashMap保存上一次任务的时间点。脑袋一发烧存成了在原字符串中的位置。我测试的例子比如ABAB,AAB ...

谢谢提醒,我开始想法也是存放index,仔细一想不对,想不到还有这么一个陷阱。谢谢了。
回复

使用道具 举报

🔗
jeremy_sea 2016-4-1 09:56:32 | 只看该作者
全局:
adiggo 发表于 2016-4-1 02:33
我一开始 也是这样想的,  看来意思不是这样, 并不是字母相邻。 比如ABcA, cooldown 是5, 那么输出是AB ...

哦,这样还稍微make sense一些
不敢相信这是facebook出的题......
回复

使用道具 举报

🔗
bobzhang2004 2016-4-3 06:28:40 | 只看该作者
全局:
写了下代码
  1. public class CooldownTime {
  2.         public static void main(String[] args) {
  3.                 System.out.println(cooldownBetter("ACDEGFABXYZPLB", 5));
  4.         }

  5.         public static int cooldownBetter(String input, int N) {
  6.                 int extra = 0;
  7.                 Map<Character, Integer> map = new HashMap<>();
  8.                 for (int i = 0; i < input.length(); i++) {
  9.                         char cur = input.charAt(i);
  10.                         if (map.containsKey(cur) && map.get(cur) >= i + extra - N) {
  11.                                 extra += (map.get(cur) - (i + extra - N)) + 2;
  12.                                 System.out.println(extra + " * ");
  13.                         }
  14.                         map.put(cur, i + extra - 1);
  15.                 }
  16.                 System.out.println(extra);
  17.                 return input.length() + extra;
  18.         }

  19. }
复制代码
回复

使用道具 举报

🔗
sealove999 2016-4-3 07:13:54 | 只看该作者
全局:
  1. public class Solution {
  2.   public String cooldown(String s, int cooldown) {
  3.     StringBuilder sb = new StringBuilder();
  4.     Map<Character, Integer> m = new HashMap<>();
  5.     int writeIdx = 0;
  6.     for (int i = 0; i < s.length(); i++) {
  7.       char c = s.charAt(i);
  8.       if (m.containsKey(c)) {
  9.         while (writeIdx <= m.get(c) + cooldown) {
  10.           sb.append(".");
  11.           writeIdx++;
  12.         }
  13.       }
  14.       sb.append(c);
  15.       writeIdx++;
  16.       m.put(c, writeIdx - 1);
  17.     }
  18.     return sb.toString();
  19.   }

  20.   public int cooldown2(String s, int cooldown) {
  21.     Map<Character, Integer> m = new HashMap<>();
  22.     int writeIdx = 0;
  23.     for (int i = 0; i < s.length(); i++) {
  24.       char c = s.charAt(i);
  25.       if (m.containsKey(c)) {
  26.         writeIdx = Math.max(writeIdx, m.get(c) + cooldown + 1);
  27.       }
  28.       writeIdx++;
  29.       m.put(c, writeIdx - 1);
  30.     }
  31.     return writeIdx;
  32.   }

  33.   public static void main(String[] args) {
  34.     Solution ss = new Solution();
  35.     System.out.println(ss.cooldown("AABB", 5));
  36.     System.out.println(ss.cooldown2("AABB", 5));
  37.     return;
  38.   }
  39. }
复制代码
回复

使用道具 举报

🔗
tigercode 2016-9-12 23:06:43 | 只看该作者
全局:
Map<character, lastIdx>
回复

使用道具 举报

🔗
helloworld00 2016-10-14 23:33:18 | 只看该作者
全局:
貌似是这个题
https://discuss.leetcode.com/topic/28289/rearrange-tasks
回复

使用道具 举报

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

本版积分规则

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