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

2016-08-16 00:18:26 +08:00
 Yc1992
最简单的 Reverse String https://leetcode.com/problems/reverse-string/,我用了很多方法,最后还是发现 str[::-1] 时间最短, 64ms ,但是也只能超过 77%。

看了统计数据,不能理解 48ms 是如何做到的。有人知道吗?
8606 次点击
所在节点    Python
34 条回复
pangliang
2016-08-16 11:31:40 +08:00
go 不是很懂, 针对这题的话, O(n) 可以再压缩 成 O(n/2), 一般标准库的应该都是用的 O(n)
然后再压缩的话, 就是看是否有多余的运算, 比如 循环里 i < string.length / 2 可以优化 掉
8bit
2016-08-16 12:03:47 +08:00
这题 Java 竟然优化得比 C++都厉害了
wy315700
2016-08-16 12:07:11 +08:00
居然不用 ptrace 进行统计
lcorange
2016-08-16 12:28:29 +08:00
@8bit 不是优化的厉害,是改了计时方式,把虚拟机启动时间忽略了
tinyproxy
2016-08-16 12:44:56 +08:00
@8bit 还有就是可能测试用例不一样,所以不同语言比较意义不大。
shimanooo
2016-08-16 12:51:40 +08:00
理论上, reverse string 标一个‘ reversed ’就行了, O(1)的。然后用的人反过来读就行...
jerryshao
2016-08-16 17:13:53 +08:00
直接 return new StringBuilder(s).reverse().toString(); // 4ms 逃
8bit
2016-08-16 18:35:02 +08:00
@lcorange 感觉的确是省了,提交比较早的答案和现在差的不少


@tinyproxy 感觉测试用例应该差不多少吧,我在想他们是不是提供了一些典型字符串字面值的测试用例
tinyproxy
2016-08-16 19:20:08 +08:00
@8bit 我之前刷的一些题目,要求如果是用 C 解决的话,空间要求是 O(1),所以一些题目的不同语言测试用例会有一些不同的。
还有就是之前知乎上面看别人说的(出处找不着了), C/C++的测试用例 size 可能会比起他语言的 size 大,如果是这种情况,那么比较速度其实不公平。
8bit
2016-08-16 20:04:20 +08:00
@tinyproxy 这个方面我倒是没想到
geeti
2016-08-18 12:54:44 +08:00
lc 的计时方差很多。提交三次,自己去个平均值好了。 99%那些一般也是 90%左右的 glitch
hjb912
2018-02-07 17:52:17 +08:00
python 22 题 42ms
MnameHZJ
2019-01-09 02:40:11 +08:00
2F 果然是正解,我相同的代码一开始是 105ms,再运行一次就编程 75ms 了。
autogen
2019-02-13 12:53:07 +08:00
2019 年。。。现在还这样,
同样的代码,多提交几次,可以获得更短的执行时间

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

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

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

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

© 2021 V2EX