RT 刷 leetcode 发现不少这种链表题,然后有几次了,看到有人都是先把链表遍历一遍,储存在数组里,然后数组处理交换或者赋值,最后把结果输出在一个新的返回的链表里。。。
总感觉这么干难道不是作弊?当然相当于是用空间换时间的一种解法。。。
1
lsvih 2019-06-18 16:32:50 +08:00
打比赛内存卡的比较死就过不了了。平常解题别人要取巧也没办法呗
|
2
lucifer9 2019-06-18 17:11:49 +08:00
我小时候写作业有练习循环的要输出个矩形之类,有些实在复杂懒得想了,我都是直接写 printf
|
3
wqzjk393 2019-06-18 17:18:27 +08:00
因为链表很多时候需要用到指针和递归调用之类的,写法比较麻烦。其实说起来,反正又不是自己的事情,他爱偷鸡就偷吧
|
4
russian OP @lsvih 我发现这种解法在 leetcode 上竟然速度一半 80%往上,内存一半也是类似。。。什么鬼。我以后面试题也可以这么做卧槽
当然 acm 应该是不行。 |
5
WhoMercy 2019-06-18 17:54:29 +08:00
关于空间换时间:
因为 LC 会卡运行时间,有超时的限制,但没遇到过超内存的情况。 我的理解是,相当于变相允许空间换时间。 关于偷懒的解法: 我看的解法不多,一般只看排名靠前的那几个,有的解法比较有新意,比如代码量很少的、速度很快的、使用空间很小的,他们为了达到这个目的做了一些额外工作也可以理解吧,毕竟千篇一律的解法也没意思。 如果真的需要做空间限制的, 会有提示,类似于" Could you implement it without using extra memory",这样大家都会尽量考虑少使用空间吧。 |
6
russian OP @wqzjk393 关键是我发现面试题也可以这么偷鸡啊,特别是 online assessment。不太清楚如果当面这么写会不会被面试官喷。
|
8
x1nes 2019-06-18 18:00:12 +08:00
之前还看到过一个把所有测试用例的结果 用 if ,else if 挨个返回的,用了 3ms ,排名第一
|
10
mooncakejs 2019-06-18 19:10:29 +08:00
leetcode 的机制有问题,同样的提交,每次提交运行时间都不太一样,我猜是不同的测试在同一个机器上运行导致互相干扰结果不同,如果是数指令数就好了。
|