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

gg全套

🔗
 楼主| hyperspace 2016-9-16 04:41:43 | 只看该作者
全局:
jy_121 发表于 2016-9-16 02:13
同想问下电面那道题用recursion为什么是O(n)? 谢谢

是O(n^2)。
我说说我的做法。
设input str的第一个character是c
从str的尾部开始往前遍历找到c 然后check两头的substring是不是一样 如果是就把中间一截做input进入下一个recursion

这样的话worst case就是str里每个character都要进行这样的操作。又因为substring这个方法的时间复杂度是O(n)所以总共是O(n^2).

当然里面还有很多细节和优化什么的。。
回复

使用道具 举报

🔗
 楼主| hyperspace 2016-9-16 04:42:02 | 只看该作者
全局:
domofeng 发表于 2016-9-16 02:22
请问下, 电面那题, ab|c|ab这种算是对称吗?

是的 凑字数。。。。。
回复

使用道具 举报

🔗
jy_121 2016-9-16 05:01:03 | 只看该作者
全局:
hyperspace 发表于 2016-9-16 04:41
是O(n^2)。
我说说我的做法。
设input str的第一个character是c

嗯,我想的是前后两边都截取相同的子串然后递归,找不到的话就说明当前整个子串是一部分。
回复

使用道具 举报

🔗
domofeng 2016-9-16 05:11:40 | 只看该作者
全局:

跑了你的code, 发现 abab, teammate, aaa都越界了, 不懂C++, 我是改了你的code用java 跑的。

end 应该是最小是0吧, 因为你设置的end=start;

e.g. for teammate
n=8
start=8/2-1=3, starting from the index 3th
end=start=3;

进入while loop
len=end-start+1=3-3+1=1;
s.substr(start, len)=s.subst(3, 1), 这个就不对了把。
回复

使用道具 举报

🔗
domofeng 2016-9-16 05:14:49 | 只看该作者
全局:
明白了, C++的substr和java 的定义不一样, faint
回复

使用道具 举报

🔗
todayand 2016-9-16 05:15:29 | 只看该作者
全局:
domofeng 发表于 2016-9-16 05:11
跑了你的code, 发现 abab, teammate, aaa都越界了, 不懂C++, 我是改了你的code用java 跑的。

end  ...

额,C++中string.substr(start_index, length_of_substring)
回复

使用道具 举报

🔗
domofeng 2016-9-16 05:46:53 | 只看该作者
全局:
todayand 发表于 2016-9-16 05:15
额,C++中string.substr(start_index, length_of_substring)

这种case 好像不行,
abbb, return 2
abbbb, return 3
bbba, return 2
bbbba, return 3


补充内容 (2016-9-16 05:48):
abcabcabc, return 5

补充内容 (2016-9-16 05:49):
都应该return 1吧, 有点晕
回复

使用道具 举报

🔗
pawprinter 2016-9-21 01:57:55 | 只看该作者
全局:
电面我想的是一个dp解法,lz能分析下你的做法的复杂度么?
回复

使用道具 举报

🔗
XavierWangXY 2016-9-24 03:41:12 | 只看该作者
全局:
电面那个是 greedy  吧    从两边往中间扫,对称的就pass, 不对称两边各自往中间走一步一步直到两边的substring再次相等。 如果算substring (n) 那就O(n2)喽
回复

使用道具 举报

🔗
XavierWangXY 2016-9-24 03:46:03 | 只看该作者
全局:
Onsite 第二题那个  可不可以 用heap存K个离target最近的点, steaming in points in Set s, if closer 存进heap同时踢出来一个,这样最后可以只用O(K)memory?
回复

使用道具 举报

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

本版积分规则

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