一亩三分地论坛

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

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

Facebook 电面

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

2016(4-6月) 码农类 硕士 全职@Facebook - 猎头 - 技术电面 |Other在职跳槽

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

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

x
刚刚面完,欧洲小哥,发上来攒人品
# Tasks: 1, 1, 2, 1
# Recovery interva (cooldown): 2
# Output: 7  (order is 1 _ _ 1 2 _ 1)

# Example 2

# Tasks: 1, 2, 3, 1, 2, 3
# Recovery interval (cooldown): 3
# Output: 7  (order is 1 2 3 _ 1 2 3). 鍥磋鎴戜滑@1point 3 acres

# Example 3. Waral 鍗氬鏈夋洿澶氭枃绔,

# Tasks: 1, 2, 3 ,4, 5, 6, 2, 4, 6, 1, 2, 4. Waral 鍗氬鏈夋洿澶氭枃绔,
# Recovery interval (cooldown): 6. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
# Output: 18  (1 2 3 4 5 6 _ _ 2 _ 4 _ 6 1 _ 2 _ 4)
*/. From 1point 3acres bbs

评分

2

查看全部评分

yueliu2366 发表于 2016-4-29 00:33:10 | 显示全部楼层
练习一下, 用一个hashmap<String, Integer>, key是task字符,value是这个字符最近一次在结果list中出现的坐标, 如果当前任务在map里存在且最近一次在结果list中出现的坐标离当前坐标的距离还在cooldown距离内,就输出"_",直到距离大于cooldown才输出当前任务,并且更新这个字符最近一次在结果list中出现的坐标。时间复杂度O(n)
public class Solution {
    public List<Integer> Printer(String[] tasks, int cooldown) {
        List<Integer> ret = new  LinkedList<Integer>();
        if (tasks == null || tasks.length == 0) {
            return;
        }
        
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        int j = 0;
        for(int i = 0; i < tasks.length; i++) {
            while (map.containsKey(tasks[i]) && map.get(tasks[i]) + cooldown >= j) {
                ret.add("_");
                j++;
            }
            ret.add(tasks[i]);
            map.put(tasks[i], j);
            j++;
        }
        return ret;
    }
}
回复 支持 1 反对 0

使用道具 举报

youto 发表于 2016-4-28 09:59:26 | 显示全部楼层
没有followup吗
回复 支持 反对

使用道具 举报

edcent 发表于 2016-4-28 11:40:41 | 显示全部楼层
楼主可以解释一下吗?没看懂啊..
回复 支持 反对

使用道具 举报

Fustang 发表于 2016-4-28 20:36:00 | 显示全部楼层
edcent 发表于 2016-4-28 11:40
楼主可以解释一下吗?没看懂啊..

应该是说同一编号task完成后有6小时的cooldown, 让打印task list的完成方式
# Tasks: 1, 2, 3 ,4, 5, 6, 2, 4, 6, 1, 2, 4
# Recovery interval (cooldown): 6
# Output: 18  (1 2 3 4 5 6 _ _ 2 _ 4 _ 6 1 _ 2 _ 4)
回复 支持 反对

使用道具 举报

sheepmiemies 发表于 2016-4-28 22:21:29 | 显示全部楼层
感觉翻译过来就是,给定任务执行的顺序,以及单个任务的cool down周期,输出任务执行的time schedule。

用hashmap记录每个任务上一次执行的index (time slot),然后重复任务出现的时候,根据cool down和index加对应数量的"_"。. more info on 1point3acres.com

话说LZ四月底了还有机会面呀,不是好早就说不招new grad只招PHD了么。。
回复 支持 反对

使用道具 举报

 楼主| ruochenzhang 发表于 2016-4-29 00:55:13 | 显示全部楼层
sheepmiemies 发表于 2016-4-28 22:21. visit 1point3acres.com for more.
感觉翻译过来就是,给定任务执行的顺序,以及单个任务的cool down周期,输出任务执行的time schedule。
.鐣欏璁哄潧-涓浜-涓夊垎鍦
...

我是跳槽的呀,不是new grad了,可能是妹子光环?所以也没太难
回复 支持 反对

使用道具 举报

sheepmiemies 发表于 2016-4-29 10:38:11 | 显示全部楼层
ruochenzhang 发表于 2016-4-29 00:55
我是跳槽的呀,不是new grad了,可能是妹子光环?所以也没太难

啊,原谅我看的时候瞎了。。。没注意是在职跳槽!加油啊FB待遇超棒!
回复 支持 反对

使用道具 举报

Yang778899 发表于 2016-5-5 12:51:36 | 显示全部楼层
ruochenzhang 发表于 2016-4-29 00:55
我是跳槽的呀,不是new grad了,可能是妹子光环?所以也没太难

lz店面有结果了么?是几天之内拿到消息的?
回复 支持 反对

使用道具 举报

mdyuki1016 发表于 2016-6-25 10:27:48 | 显示全部楼层
Much concise solution.

static class CoolDown{
    static String getStr(String s, int k) { 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
      Map<Character, Integer> map = new HashMap<Character, Integer>();-google 1point3acres
      StringBuilder sb = new StringBuilder();. 1point 3acres 璁哄潧
      for (char c : s.toCharArray()) {
        int idx = map.getOrDefault(c, -k);
        while(sb.length() - k < idx) {
          sb.append("_");
        }
        sb.append(c);
        map.put(c,sb.length());
      }
      return sb.toString();
    }
  }
回复 支持 反对

使用道具 举报

997562971@qq.co 发表于 2016-8-1 04:16:11 | 显示全部楼层
见到别人也被考这题了。感觉就是用map搞。谢谢楼主
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-9 20:08

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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