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

脸书onsite

🔗
 楼主| yzlwjs 2016-10-24 01:30:22 | 只看该作者
全局:
steveguang 发表于 2016-10-22 22:54
楼主可以讲下第一题第四题怎么做的吗?

第一题就是利扣原题呀,不用dp的话,我说的是backtracking/DFS的做法,感觉这个follow up纯粹是小哥没准备别的题了硬加上的
第四题我的暴力解就挺直接的,用dp的话我后来想了想,可以记录到每个位置的走法数(初始状态只有数字1有1种),然后每走一步,根据前一步的位置更新下一步位置的走法数,步数走完以后,把所有位置的走法数加起来就可以了
回复

使用道具 举报

🔗
steveguang 2016-10-24 04:06:27 | 只看该作者
全局:
yzlwjs 发表于 2016-10-24 01:30
第一题就是利扣原题呀,不用dp的话,我说的是backtracking/DFS的做法,感觉这个follow up纯粹是小哥没准 ...

楼主走日字是什么意思?矩形对角线吗?有什么限制没有
回复

使用道具 举报

🔗
 楼主| yzlwjs 2016-10-24 10:57:40 | 只看该作者
全局:
steveguang 发表于 2016-10-24 04:06
楼主走日字是什么意思?矩形对角线吗?有什么限制没有

就是中国象棋里面的马走日,横2步纵1步,或者横1步纵2步
回复

使用道具 举报

🔗
liyuanxi23 2016-10-24 13:05:31 | 只看该作者
全局:
居然看出来群主了
回复

使用道具 举报

🔗
dowhatyoufear 2016-10-25 00:42:35 | 只看该作者
全局:
这个多少种可能走法,比如1开始走两步,最后1-6-1,1-6-7,1-8-1,1-8-3 应该是有1,7,3三个Positions. 结果是3吗?如果不是那就有问题了,那就应该是2^steps种不同路径了(即使最后到一样的点)   链接: https://instant.1point3acres.com/thread/195066 来源: 一亩三分地 (Instant 真垃圾!)
回复

使用道具 举报

🔗
ericlee27 2016-10-25 03:37:57 | 只看该作者
全局:
dowhatyoufear 发表于 2016-10-25 00:42
这个多少种可能走法,比如1开始走两步,最后1-6-1,1-6-7,1-8-1,1-8-3 应该是有1,7,3三个Positions. 结 ...

我也是这么觉得的。。。
回复

使用道具 举报

🔗
 楼主| yzlwjs 2016-10-25 12:22:17 | 只看该作者
全局:
dowhatyoufear 发表于 2016-10-25 00:42
这个多少种可能走法,比如1开始走两步,最后1-6-1,1-6-7,1-8-1,1-8-3 应该是有1,7,3三个Positions. 结 ...

是后者,看有多少种不同路径(即使最后到一样的点)。 另外应该是有O(m^steps)种不同路径,有些点出发到下一步的走法不一定是2种, 比如4->(3, 9, 0)
回复

使用道具 举报

🔗
dowhatyoufear 2016-10-25 12:47:53 | 只看该作者
全局:
yzlwjs 发表于 2016-10-25 12:22
是后者,看有多少种不同路径(即使最后到一样的点)。 另外应该是有O(m^steps)种不同路径,有些点出发 ...

谢谢楼主~BFS或者DFS没觉得有什么不好的。恭喜楼主拿到Offer。
回复

使用道具 举报

🔗
Badger96 2016-10-25 12:57:00 | 只看该作者
全局:
想请教一下楼主第三问的followup怎么做的?能写一段代码看看吗,十分感谢
回复

使用道具 举报

🔗
Badger96 2016-10-25 13:18:55 | 只看该作者
全局:
试写了一下code,先统计了frequency of tasks然后用maxHeap做的,楼主能帮忙看看是这样么,感觉还有可以优化的地方,谢谢~
public static String taskSchedule(String str, int k) {
        StringBuilder rearranged = new StringBuilder();
        Map<Character, Integer> map = new HashMap<>();
        for (char c : str.toCharArray()) {
            if (!map.containsKey(c)) {
                map.put(c, 0);
            }
            map.put(c, map.get(c) + 1);
        }

        Queue<Map.Entry<Character, Integer>> maxHeap = new PriorityQueue<>(new Comparator<Map.Entry<Character, Integer>>() {
            public int compare(Map.Entry<Character, Integer> entry1, Map.Entry<Character, Integer> entry2) {
                return entry2.getValue() - entry1.getValue();
            }
        });
        maxHeap.addAll(map.entrySet());

        while (!maxHeap.isEmpty()) {
            int i = 0;
            ArrayList<Map.Entry<Character, Integer>> temp = new ArrayList<>();
            while (i <= k && !maxHeap.isEmpty()) {
                Map.Entry<Character, Integer> curr = maxHeap.poll();
                rearranged.append(curr.getKey());
                curr.setValue(curr.getValue() - 1);
                temp.add(curr);
                i++;
            }
            for (Map.Entry<Character, Integer> e : temp) {
                if (e.getValue() > 0) {
                    maxHeap.offer(e);
                }
            }
        }
        return rearranged.toString();
    }
回复

使用道具 举报

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

本版积分规则

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