这是一道简单题,但是我也会尽可能的把它做好,代码提及已经通过,但是我自己产生一个疑惑。下面是我第一次提交的代码(耗时 64ms):
class Solution:
def canConstruct(self, ransomNote, magazine):
rans = ransomNote.replace('', ' ').split()
mags = magazine
for i in range(len(ransomNote)):
if rans[i] in mags:
mags = mags.replace(rans[i], '',1)
rans[i] = ''
if not ''.join(rans):
return True
return False
可以看到,mags 对 magazine 做了引用,然后,修改代码如下:
class Solution:
def canConstruct(self, ransomNote, magazine):
rans = ransomNote.replace('', ' ').split()
for i in range(len(ransomNote)):
if rans[i] in mags:
magazine = magazine.replace(rans[i], '',1)
rans[i] = ''
if not ''.join(rans):
return True
return False
再次提交后,代码耗时达到 96ms。 按道理,引用虽然没开辟新内存,但耗时相差也不会这么大啊,求解。
1
shiji 2019-03-26 00:02:01 +08:00
Leetcode 的运行时间不是很靠谱,100%内的误差不算啥。
内存也一样。 我用 PHP 刷题内存基本都稳定在 14-16M 左右。 |
3
roundRobin 2019-03-26 00:40:43 +08:00
要养成只看复杂度的习惯。。。排名 top1%和 99%很可能时间空间复杂度都是一样的
|
4
Northxw OP @roundRobin 谢谢啦
|
5
jiezhi 2019-03-26 07:06:54 +08:00 via iPhone
同样,我优化过的代码排名更低了,迷一样。
可能非订阅用户,执行环境随便给的? |
7
luomu24 2019-03-26 09:40:26 +08:00
用的中文版吗。最近 leetcode 的运行时间就是个迷。不靠谱。
|