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

[CareerCup] 【第三轮】6.16-6.22 CareerCup 1.3

🔗
sanguine 2014-6-24 21:19:41 | 只看该作者
全局:
fang_wu 发表于 2014-6-24 21:15
为啥我试过不行啊?如果不转换的话,只是一个数组,那么只会比较首地址,在java中的equal,只有转换为str ...

我的意思是直接写for循环判断两个char[]字符是否equal

String的equal()一样用的是for循环遍历==只不过封装起来了而已,但是你这里用toString又会新建新的String对象
回复

使用道具 举报

🔗
fang_wu 2014-6-24 22:24:21 | 只看该作者
全局:
sanguine 发表于 2014-6-24 21:19
我的意思是直接写for循环判断两个char[]字符是否equal

String的equal()一样用的是for循环遍历==只不过 ...

自己写的再简单都可能有bug,还是封装的靠谱。不过你的建议也是很有道理的
回复

使用道具 举报

🔗
readman 2014-6-24 23:19:50 | 只看该作者
全局:
sanguine 发表于 2014-6-24 20:18
空间复杂度为什么是O(1)?

不是利用了额外Int[]空间吗?

哪个是256个不同的字符..
当然, 你可以假设有无限个不同的字符.........

其实是n...
回复

使用道具 举报

🔗
zhenzhenanan 2014-6-24 23:41:23 | 只看该作者
全局:
sanguine 发表于 2014-6-24 20:39
1. first to check whether the length of the two input string is equal is very important! Don't for ...

You are right. Thanks!
回复

使用道具 举报

🔗
chouclee 2014-6-25 00:11:19 | 只看该作者
全局:
sanguine 发表于 2014-6-24 20:36
为什么Solution1的space complexity是O(1),而Solution2是O(n),一直都不太会计算space complexity~~~

...

我觉得他写反了。Solution1 应该是O(N),因为把string转成了char[],Solution2是O(1),只开了一个int[256]的数组,大小是constant的,与N无关

点评

我也是这样认识的==  发表于 2014-6-25 09:01
回复

使用道具 举报

🔗
chouclee 2014-6-25 00:23:58 | 只看该作者
全局:
serolins 发表于 2014-6-19 06:58
【解题思路】
基本思路,先看两个string中是不是有null,有直接返回false。再看长度是否相同,不同直接返 ...

我不同意你说的“256的时候space是O(1), 否则还是O(n)”,因为字符是有总数限制的(constant),输入的字符数量是可以近似无限的,但O(n)是一个线型关系
回复

使用道具 举报

🔗
sanguine 2014-6-25 08:55:23 | 只看该作者
全局:
readman 发表于 2014-6-24 23:19
哪个是256个不同的字符..
当然, 你可以假设有无限个不同的字符.........

那HashMap的话,因为根据input String而改变空间大小,所以是O(n)?
回复

使用道具 举报

🔗
chouclee 2014-6-25 09:57:00 | 只看该作者
全局:
serolins 发表于 2014-6-25 05:16
你的意思是说,只要字符种类的个数是有限的,那么就不是线性关系因为O(CONSTANT) = O(1)。有道理,谢谢纠 ...

我觉得是的。因为O(1)的定义就是存在某个n1和c1,N>n1时,恒有f(N) <= c1*1=c1,这里的c1就是所有的字符种类数。unicode可以表示目前已知的所有字符,最多也就100w个(全都遇到的几率基本上为0了。。。)。其实说它是O(n)从数学角度也是说得通的,但一般大家说的都是tight upper-bound。
P.S. 我觉得这题的空间使用写Theta(1)更合适,存在n1,c1和c2,N>n1时,恒有c2<=f(N) <=c1,c2可以N=n1时遇到的不同字符的个数,c2取所有字符的种类数。
回复

使用道具 举报

🔗
sanguine 2014-6-25 10:52:34 | 只看该作者
全局:
chouclee 发表于 2014-6-25 09:57
我觉得是的。因为O(1)的定义就是存在某个n1和c1,N>n1时,恒有f(N) n1时,恒有c2

1.4里的题目写的是if implementing in Java, please use a character array so that you can perform this operation in place

这样的话,char[] = new string.tocharArray()
按道理是根据input String来分配空间,char[]不应该也是O(n)吗?为什么就是in place了?
回复

使用道具 举报

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

本版积分规则

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