Leetcode - 383 赎金信

2019-03-25 23:59:04 +08:00
 Northxw

  这是一道简单题,但是我也会尽可能的把它做好,代码提及已经通过,但是我自己产生一个疑惑。下面是我第一次提交的代码(耗时 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。 按道理,引用虽然没开辟新内存,但耗时相差也不会这么大啊,求解。

2177 次点击
所在节点    程序员
8 条回复
shiji
2019-03-26 00:02:01 +08:00
Leetcode 的运行时间不是很靠谱,100%内的误差不算啥。

内存也一样。 我用 PHP 刷题内存基本都稳定在 14-16M 左右。
Northxw
2019-03-26 00:16:17 +08:00
@shiji emmm... 如果这样的话, 就是个 bug😁
roundRobin
2019-03-26 00:40:43 +08:00
要养成只看复杂度的习惯。。。排名 top1%和 99%很可能时间空间复杂度都是一样的
Northxw
2019-03-26 06:48:13 +08:00
@roundRobin 谢谢啦
jiezhi
2019-03-26 07:06:54 +08:00
同样,我优化过的代码排名更低了,迷一样。

可能非订阅用户,执行环境随便给的?
Northxw
2019-03-26 07:49:24 +08:00
@jiezhi 不懂
luomu24
2019-03-26 09:40:26 +08:00
用的中文版吗。最近 leetcode 的运行时间就是个迷。不靠谱。
Northxw
2019-03-26 10:01:13 +08:00
@luomu24 嗯啊。是 CN。还行吧, 看着也比较亲切。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/548518

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX