📣 独立日限时特惠: VIP通行证立减$68
楼主: tracywade
跳转到指定楼层
上一主题 下一主题
收起左侧

facebook onsite

🔗
sonicgu 2015-4-3 08:43:59 | 只看该作者
全局:
siren01 发表于 2015-4-3 07:39
谢谢,想了一下,你的代码可行,赞

求第一题O(n)的代码,貌似用hashmap能做
回复

使用道具 举报

🔗
siren01 2015-4-3 08:49:29 | 只看该作者
全局:
sonicgu 发表于 2015-4-3 08:43
求第一题O(n)的代码,貌似用hashmap能做

yuxrose回家贴
回复

使用道具 举报

🔗
siren01 2015-4-3 08:53:23 | 只看该作者
全局:
sonicgu 发表于 2015-4-3 08:43
求第一题O(n)的代码,貌似用hashmap能做

//给一个tree,返回每个点左右子树的和与自己值的差,用递归做,还问了不递归怎么做,“第二题用三个stack,一个维护后续遍历,一个维护每个节点为根的字数和,另一个维护你要的结果”

求代码看看
回复

使用道具 举报

🔗
 楼主| tracywade 2015-4-3 10:16:09 | 只看该作者
全局:
siren01 发表于 2015-4-3 08:53
//给一个tree,返回每个点左右子树的和与自己值的差,用递归做,还问了不递归怎么做,“第二题用三个stac ...

第二题 可以用 arraylist加 hashmap做
回复

使用道具 举报

🔗
yuxrose 2015-4-3 10:23:20 | 只看该作者
全局:
siren01 发表于 2015-4-3 05:09
赞,小板凳搬好了

map的key是字母,value是最新的index, 一边扫一边update index, cooldown就是k.
有大神能想想O(1)怎么做吗?

public static int scheduler_map(String s){
                Map<Character, Integer> hashMap = new HashMap<Character, Integer>();
                int total = 0;
                int i = 0;
                int cooldown = 2;
                while(i < s.length()){
                        if(!hashMap.containsKey(s.charAt(i)) || (total - hashMap.get(s.charAt(i)) >= cooldown + 1)){
                                hashMap.put(s.charAt(i), total);
                                i++;
                        }
                        total++;
                }
                return total;
        }

补充内容 (2015-4-3 10:28):
测试case
Tasks: AABABCD
Cooldown Time: 2
  A__AB_ABCD
Output: 10

回复

使用道具 举报

🔗
siren01 2015-4-3 10:39:37 | 只看该作者
全局:
tracywade 发表于 2015-4-3 10:16
第二题 可以用 arraylist加 hashmap做

求楼主上代码,小板凳搬好了
回复

使用道具 举报

🔗
siren01 2015-4-3 10:46:36 | 只看该作者
全局:
yuxrose 发表于 2015-4-3 10:23
map的key是字母,value是最新的index, 一边扫一边update index, cooldown就是k.
有大神能想想O(1)怎么做 ...

哈哈,赞一个,不错的代码

补充内容 (2015-4-3 10:58):
往回扫k个字母,看是否有出现,是,则等着,否,则可以执行,代码差不多,只不过这里用hashmap判断的代码要改为k次往前扫

补充内容 (2015-4-3 11:10):
试了一下,貌似行不通,还是要用东西记录上一个出现的,毕竟处理的时间是相对时间

点评

我也来提供一个有效信息吧, 刚刚找到这题follow up是cooldown time 如果作为参数怎么改,这题如果要问follow up是O(1) 空间的话,那就有点难了,因为如果不记录之前出现过的字母的话,那么每次遇到一个新字母都....  发表于 2015-4-3 10:57
回复

使用道具 举报

🔗
yuxrose 2015-4-3 11:48:24 | 只看该作者
全局:
sonicgu 发表于 2015-4-3 05:47
献丑写个第二个吧, 水平有限,应该不是最好的解法
class TreeNode
{

这个办法很赞!不过最后不是sorted list,还是visit的order,所以是不是还得再sort一下?
回复

使用道具 举报

🔗
daisyang 2015-4-3 12:55:35 | 只看该作者
全局:
yuxrose 发表于 2015-4-3 10:23
map的key是字母,value是最新的index, 一边扫一边update index, cooldown就是k.
有大神能想想O(1)怎么做 ...

what if task 顺序不用一致
回复

使用道具 举报

🔗
zengm321 2015-4-3 13:19:54 | 只看该作者
全局:
siren01 发表于 2015-4-3 10:46
哈哈,赞一个,不错的代码

补充内容 (2015-4-3 10:58):

用deque可以实现O(K)space, 等价于O(1).
用一个长度为K的deque,每次检查的时候就数queue里面有没有出现过字符,也是O(K)的复杂度。
然后循环移除front
回复

使用道具 举报

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

本版积分规则

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