V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bytenoob
V2EX  ›  Python

leetcode 上面时间最短的 solution 都是用了什么黑科技?

  •  
  •   bytenoob ·
    bufrr · Aug 16, 2016 · 9214 views
    This topic created in 3547 days ago, the information mentioned may be changed or developed.
    最简单的 Reverse String https://leetcode.com/problems/reverse-string/,我用了很多方法,最后还是发现 str[::-1] 时间最短, 64ms ,但是也只能超过 77%。

    看了统计数据,不能理解 48ms 是如何做到的。有人知道吗?
    Supplement 1  ·  Aug 16, 2016
    看来是 leetcode 计时的问题,同一份代码不同时间提交时间不同导致的。
    34 replies    2019-02-13 12:53:07 +08:00
    churchmice
        1
    churchmice  
       Aug 16, 2016
    有个毛的黑科技,别用这么高层的语言,用 C 写,4ms 都没问题
    kkzxak47
        2
    kkzxak47  
       Aug 16, 2016 via Android
    我记得 LeetCode 服务器计时不稳定,相同的代码能差 50%,现在不知道还这样不
    lsmgeb89
        3
    lsmgeb89  
       Aug 16, 2016
    @churchmice 不是同一种语言之前相互比的嘛
    ptyfork
        4
    ptyfork  
       Aug 16, 2016
    哪里可以看到统计数据, 我怎么看不到?
    czheo
        5
    czheo  
       Aug 16, 2016
    2F 正解
    benpichu
        6
    benpichu  
       Aug 16, 2016 via Android
    @kkzxak47 [确实是这样(]
    livc
        7
    livc  
       Aug 16, 2016 via Android
    刷算法题就要用 c/cpp ,其他感觉锻炼价值不大。
    v2gba
        8
    v2gba  
       Aug 16, 2016
    @ptyfork
    你提交完通过的话会显示效率分布图的
    scnace
        9
    scnace  
       Aug 16, 2016 via Android
    @MrGba2z golang 表示长期没有统计数据(
    Garantion
        10
    Garantion  
       Aug 16, 2016
    我听说有些可以猜测试用例。
    tinyproxy
        11
    tinyproxy  
       Aug 16, 2016 via iPhone
    赞同二楼,因为试过一段代码写的较烂,第一次提交 fail ,手抖再点了一下过了。
    shyling
        12
    shyling  
       Aug 16, 2016 via Android
    反对说刷题就要用 c/cpp 的。
    est
        13
    est  
       Aug 16, 2016
    上次黑 leetcode 发现判断结果是 stdout 判断的。于是就放弃了。
    bjzhou1990
        14
    bjzhou1990  
       Aug 16, 2016
    遇到一题说是求一个数的开平方根,我用 Java 的 Math.sqrt 居然直接过了...什么鬼...
    21grams
        15
    21grams  
       Aug 16, 2016
    @bjzhou1990 这没什么问题吧
    tttwww18
        16
    tttwww18  
       Aug 16, 2016
    方差很大,参考价值不高。只要不是一直垫底就没太大问题
    Hyeongo
        17
    Hyeongo  
       Aug 16, 2016
    我也很好奇,有时删了几个无关变量,时间反而变长了。顺便提一句我是用 js 刷的,锻炼一下 js ,嘿嘿嘿
    aprikyblue
        18
    aprikyblue  
       Aug 16, 2016 via Android
    @bjzhou1990 本来就不会检查你代码用了什么。。。我拿 c++ STL 的 std::sort 也过了。。。
    pangliang
        19
    pangliang  
       Aug 16, 2016
    刷 leetcode 正确的姿势是,
    第一遍,最快速的写出一个 正确的
    第二遍,自己优化自己的代码, 尽量的达到中上
    第三遍,看讨论里最快的代码, 想想是为啥
    第四遍, 试试能否更快
    lycheng
        20
    lycheng  
       Aug 16, 2016
    同样的算法,用 Py 写的能过,用 Golang 写的一直 TLE ,我也是醉了
    pangliang
        21
    pangliang  
       Aug 16, 2016
    go 不是很懂, 针对这题的话, O(n) 可以再压缩 成 O(n/2), 一般标准库的应该都是用的 O(n)
    然后再压缩的话, 就是看是否有多余的运算, 比如 循环里 i < string.length / 2 可以优化 掉
    8bit
        22
    8bit  
       Aug 16, 2016
    这题 Java 竟然优化得比 C++都厉害了
    wy315700
        23
    wy315700  
       Aug 16, 2016
    居然不用 ptrace 进行统计
    lcorange
        24
    lcorange  
       Aug 16, 2016 via Android
    @8bit 不是优化的厉害,是改了计时方式,把虚拟机启动时间忽略了
    tinyproxy
        25
    tinyproxy  
       Aug 16, 2016 via iPhone
    @8bit 还有就是可能测试用例不一样,所以不同语言比较意义不大。
    shimanooo
        26
    shimanooo  
       Aug 16, 2016
    理论上, reverse string 标一个‘ reversed ’就行了, O(1)的。然后用的人反过来读就行...
    jerryshao
        27
    jerryshao  
       Aug 16, 2016
    直接 return new StringBuilder(s).reverse().toString(); // 4ms 逃
    8bit
        28
    8bit  
       Aug 16, 2016
    @lcorange 感觉的确是省了,提交比较早的答案和现在差的不少


    @tinyproxy 感觉测试用例应该差不多少吧,我在想他们是不是提供了一些典型字符串字面值的测试用例
    tinyproxy
        29
    tinyproxy  
       Aug 16, 2016
    @8bit 我之前刷的一些题目,要求如果是用 C 解决的话,空间要求是 O(1),所以一些题目的不同语言测试用例会有一些不同的。
    还有就是之前知乎上面看别人说的(出处找不着了), C/C++的测试用例 size 可能会比起他语言的 size 大,如果是这种情况,那么比较速度其实不公平。
    8bit
        30
    8bit  
       Aug 16, 2016
    @tinyproxy 这个方面我倒是没想到
    geeti
        31
    geeti  
       Aug 18, 2016
    lc 的计时方差很多。提交三次,自己去个平均值好了。 99%那些一般也是 90%左右的 glitch
    hjb912
        32
    hjb912  
       Feb 7, 2018
    python 22 题 42ms
    MnameHZJ
        33
    MnameHZJ  
       Jan 9, 2019
    2F 果然是正解,我相同的代码一开始是 105ms,再运行一次就编程 75ms 了。
    autogen
        34
    autogen  
       Feb 13, 2019
    2019 年。。。现在还这样,
    同样的代码,多提交几次,可以获得更短的执行时间
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   762 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 21:17 · PVG 05:17 · LAX 14:17 · JFK 17:17
    ♥ Do have faith in what you're doing.