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

facebook onsite

🔗
royalheart 2015-4-7 03:28:34 | 只看该作者
全局:
tracywade 发表于 2015-4-3 03:05
开始我也是这么想的 后面你仔细一想 其实inorder就出来了, 因为你知道root 在哪  那肯定就是往左还是往 ...

还是不太明白具体怎么inorder做,LZ能给个详细点的说明吗(伪码也行),多谢~~~
回复

使用道具 举报

🔗
 楼主| tracywade 2015-4-7 03:53:38 | 只看该作者
全局:
royalheart 发表于 2015-4-7 03:28
还是不太明白具体怎么inorder做,LZ能给个详细点的说明吗(伪码也行),多谢~~~

list = inorder(root);
hashmap<node , index> map;  //node --- position in list;
int l = 0 , r = list.size() - 1;
cur = root;
while(l <= r){
   int index  = map.get(cur);
  left =  findmin(list , l , index - 1)
  right = findmin(list , index + 1 , r);
   cur = left > right ? root.right : root.left;
    l = left > right ? index + 1 : l;
  r = left > right ? r : index - 1;
}


大概就这样  时间复杂度 是  n + n /2 + n / 4 ..... = (1 - (1 / 2)^h)  * n/ ( 1 - 1/2)  ( h = lgn)  所以是线性时间复杂度
回复

使用道具 举报

🔗
anyjlucky 2015-11-19 07:34:56 | 只看该作者
全局:
求第一题的detail和解法!输入是job名字和需要时间吗?
回复

使用道具 举报

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

兄弟,deque貌似不能直接访问当中某个元素的吧,难道你每次都pop_front()然后再push回去?
回复

使用道具 举报

🔗
yanggao1119 2016-2-22 04:46:13 | 只看该作者
全局:
感觉不能直接找含最小数的子树而舍弃另一子树吧,如果最小数相同,而要通过次小数决定大小呢?我觉得这个貌似还是一个global property
回复

使用道具 举报

🔗
yanggao1119 2016-2-22 04:50:45 | 只看该作者
全局:
我感觉如果空间复杂度方面较为宽容的话,可以在每一个叶子节点存这个path所有的node value,然后heapify,然后每个heap poll一个值,直到找出一个最小值。
回复

使用道具 举报

🔗
tk1322715 2016-2-22 05:42:08 | 只看该作者
全局:
第一题我好像都看到两个版本了。有一种版本是可以交换job的次序的。这个帖子里面的queue的解法是对应的保持原本job次序的问题
回复

使用道具 举报

🔗
returning 2016-3-27 07:47:40 | 只看该作者
全局:
第二道题,题目应该是想考察dfs,这道题有两点不清楚,1,如果两个child一样数字怎么做?2,如果两条path长度不一样,哪个更小?比如一条path是50 100 1,另外一条是50 2? 第一条更长,但是1更小。如果path长度一样的话,就可以dfs了。思路,每个节点返回包含自己的已经排序的最小path给parent。一个parent拿到两个来自child的path,从中选出最小的一条,之所以这个work是因为,假设两条path是path1, path2, 他们再各自加上相同的从root到parent的path, 只需要根据path1, path2的相互关系就知道merge后大小的相互关系。所以就是dfs一路向上了。
回复

使用道具 举报

🔗
jiebour 2016-4-17 06:27:07 | 只看该作者
全局:
returning 发表于 2016-3-27 07:47
第二道题,题目应该是想考察dfs,这道题有两点不清楚,1,如果两个child一样数字怎么做?2,如果两条path长 ...

你这个说的最清晰,最屌!bottom up!
回复

使用道具 举报

🔗
SuperBald1336 2016-4-17 12:47:32 | 只看该作者
全局:
前面有人说得清楚。

最小值的node首选

以min node为root,找min node again.

....

so, make traversal twice.

First time, find min node for each node as the root.
Then, extract these min nodes into a list.
Second time, traverse until all the nodes in the list are visited.
回复

使用道具 举报

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

本版积分规则

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