leetcode 上面时间最短的 solution 都是用了什么黑科技? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
Yc1992
V2EX    Python

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

  •  
  •   Yc1992
    bufrr 2016-08-16 00:18:26 +08:00 8929 次点击
    这是一个创建于 3357 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最简单的 Reverse String https://leetcode.com/problems/reverse-string/,我用了很多方法,最后还是发现 str[::-1] 时间最短, 64ms ,但是也只能超过 77%。

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


    @tinyproxy 感觉测试用例应该差不多少吧,我在想他们是不是提供了一些典型字符串字面值的测试用例
    tinyproxy
        29
    tinyproxy  
       2016-08-16 19:20:08 +08:00
    @8bit 我之前刷的一些题目,要求如果是用 C 解决的话,空间要求是 O(1),所以一些题目的不同语言测试用例会有一些不同的。
    还有就是之前知乎上面看别人说的(出处找不着了), C/C++的测试用例 size 可能会比起他语言的 size 大,如果是这种情况,那么比较速度其实不公平。
    8bit
        30
    8bit  
       2016-08-16 20:04:20 +08:00
    @tinyproxy 这个方面我倒是没想到
    geeti
        31
    geeti  
       2016-08-18 12:54:44 +08:00
    lc 的计时方差很多。提交三次,自己去个平均值好了。 99%那些一般也是 90%左右的 glitch
    hjb912
        32
    hjb912  
       2018-02-07 17:52:17 +08:00
    python 22 题 42ms
    MnameHZJ
        33
    MnameHZJ  
       2019-01-09 02:40:11 +08:00
    2F 果然是正解,我相同的代码一开始是 105ms,再运行一次就编程 75ms 了。
    autogen
        34
    autogen  
       2019-02-13 12:53:07 +08:00
    2019 年。。。现在还这样,
    同样的代码,多提交几次,可以获得更短的执行时间
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2675 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 08:38 PVG 16:38 LAX 01:38 JFK 04:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86