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


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