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

facebook onsite

🔗
ericzeze 2015-4-3 14:34:21 | 只看该作者
全局:
请问楼主是几轮面试呀,有没有一轮Design?
回复

使用道具 举报

🔗
siren01 2015-4-3 22:11:15 | 只看该作者
全局:
zengm321 发表于 2015-4-3 13:19
用deque可以实现O(K)space, 等价于O(1).
用一个长度为K的deque,每次检查的时候就数queue里面有没有出 ...

根据层主思路补了代码,反馈大伙
  1. public static int schedule2(List<Character> task){
  2.                 Queue<Character> queue = new LinkedList<Character>();
  3.                 int total = 0;
  4.                 int i = 0;
  5.                 int coolDown = 2;
  6.                 while(i<task.size()){
  7.                         if(queue.isEmpty() || !queue.contains(task.get(i))){
  8.                                 queue.add(task.get(i));
  9.                                 i++;
  10.                         }
  11.                         else{
  12.                                 queue.add(null);
  13.                         }
  14.                         total++;
  15.                         if(queue.size()>coolDown){
  16.                                 queue.poll();
  17.                         }
  18.                 }
  19.                 return total;
  20.         }
复制代码

评分

参与人数 1大米 +5 收起 理由
mjq04 + 5 回答的很好!

查看全部评分

回复

使用道具 举报

🔗
 楼主| tracywade 2015-4-3 23:12:01 | 只看该作者
全局:
ericzeze 发表于 2015-4-3 14:34
请问楼主是几轮面试呀,有没有一轮Design?

没有 只面了三轮
回复

使用道具 举报

🔗
daisyang 2015-4-3 23:42:33 | 只看该作者
全局:
siren01 发表于 2015-4-3 22:11
根据层主思路补了代码,反馈大伙

你是怎么想出来的 太牛了!!
回复

使用道具 举报

🔗
sonicgu 2015-4-4 00:58:07 | 只看该作者
全局:
siren01 发表于 2015-4-3 22:11
根据层主思路补了代码,反馈大伙

这个代码很好,不过有个问题就是这个k必须是个常数,否则复杂度不能算O(n)和O(1)
回复

使用道具 举报

🔗
siren01 2015-4-4 01:47:41 | 只看该作者
全局:
sonicgu 发表于 2015-4-4 00:58
这个代码很好,不过有个问题就是这个k必须是个常数,否则复杂度不能算O(n)和O(1)

是的,看K,实在想不出更好的了
回复

使用道具 举报

🔗
sonicgu 2015-4-4 02:12:43 | 只看该作者
全局:
siren01 发表于 2015-4-4 01:47
是的,看K,实在想不出更好的了

米群的siren001是你的账号么?
回复

使用道具 举报

🔗
siren01 2015-4-4 02:19:03 | 只看该作者
全局:
sonicgu 发表于 2015-4-4 02:12
米群的siren001是你的账号么?

这两个账号都是朋友给的..
回复

使用道具 举报

🔗
sonicgu 2015-4-4 02:23:56 | 只看该作者
全局:
siren01 发表于 2015-4-4 02:19
这两个账号都是朋友给的..

了解,面完了等你的面经
回复

使用道具 举报

🔗
elementary 2015-4-4 08:04:56 | 只看该作者
全局:
感觉每一步都addall好像超过了O(n)? 先用HashMap 更新最小weight,然后走一遍拿到list。还有感觉是postorder?不知道inorder的思路是如何的。还请指点。
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;

  4. class Ideone {
  5.         private static class TreeNode {
  6.                 int val;
  7.                 TreeNode left;
  8.                 TreeNode right;

  9.                 TreeNode(int x) {
  10.                         val = x;
  11.                 }
  12.         }

  13.         private static HashMap<TreeNode, Integer> weight = new HashMap<TreeNode, Integer>();

  14.         private static List<Integer> findMinPath(TreeNode root) {
  15.                 List<Integer> ret = new ArrayList<Integer>();
  16.                 postOrder(root);
  17.                 findPath(root, ret);
  18.                 return ret;
  19.         }

  20.         private static void postOrder(TreeNode cur) {
  21.                 if (cur == null) {
  22.                         return;
  23.                 }
  24.                 int leftMin = cur.val;
  25.                 if (cur.left != null) {
  26.                         postOrder(cur.left);
  27.                         leftMin = weight.get(cur.left);
  28.                 }
  29.                 int rightMin = cur.val;
  30.                 if (cur.right != null) {
  31.                         postOrder(cur.right);
  32.                         rightMin = weight.get(cur.right);
  33.                 }

  34.                 int curWeight = Math.min(cur.val, Math.min(leftMin, rightMin));
  35.                 weight.put(cur, curWeight);
  36.         }

  37.         private static void findPath(TreeNode cur, List<Integer> list) {
  38.                 if (cur == null) {
  39.                         return;
  40.                 }
  41.                 list.add(cur.val);
  42.                 if (cur.left == null) {
  43.                         findPath(cur.right, list);
  44.                         return;
  45.                 }
  46.                 if (cur.right == null) {
  47.                         findPath(cur.left, list);
  48.                         return;
  49.                 }
  50.                 int leftWeight = weight.get(cur.left);
  51.                 int rightWeight = weight.get(cur.right);

  52.                 if (leftWeight > rightWeight) {
  53.                         findPath(cur.right, list);

  54.                 } else {
  55.                         findPath(cur.left, list);
  56.                 }
  57.         }
  58.         public static void main (String[] args) throws java.lang.Exception
  59.         {
  60.                 TreeNode a = new TreeNode(5);
  61.                 TreeNode b = new TreeNode(7);
  62.                 TreeNode c = new TreeNode(10);
  63.                 TreeNode d = new TreeNode(1);
  64.                 TreeNode e = new TreeNode(3);
  65.                 TreeNode f = new TreeNode(8);
  66.                 a.left = c;
  67.                 a.right = e;
  68.                 c.left = d;
  69.                 c.right = b;
  70.                 e.left = f;
  71.                 List<Integer> list = findMinPath(a);
  72.                 for (int k : list) {
  73.                         System.out.println(k);
  74.                 }
  75.         }
  76. }
复制代码
回复

使用道具 举报

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

本版积分规则

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