资讯专栏INFORMATION COLUMN

记一次作死 —— 被 Leetcode 封禁

dackel / 855人阅读

摘要:不过好消息是,在事件发生的二十四小时以后,我发现我的账号解禁了,哈哈哈哈。

本文最初发布于我的个人博客:咀嚼之味

从昨天凌晨四点起,我的 Leetcode 账号就无法提交任何代码了,于是我意识到我的账号大概是被封了……

起因

我和我的同学 @xidui 正在维护一个项目 xidui/algorithm-training。其实就是收录一些算法题的解答,目前主要对象就是 Leetcode。我前几天正好做到 #17 Letter Combinations of a Phone Number。题目也蛮简单的,我写好以后提交了一下,发现跑出来的结果是 152 ms —— “哇哦,你打败了 2.44% 的提交”。好差!!我瞬间满脸黑线。而之前提到的项目中正好有另一个同学写的关于这一题的解答,我赶紧去参考了一下,感觉空间复杂度比我小很多,但时间复杂度应该差不多呀,然后注释中有这么一句:

I think this is an O(n^3) solution, but still runs faster than 100% submissions

不信邪的我把这位同学的代码复制过来提交了一下,得到的结果是 —— 160ms...“哇哦,你打败了 2.44% 的提交哦!” ╮(╯_╰)╭

看了看 Discuss 里的解法,感觉复杂度似乎也差不多,于是我决定研 (Zuo) 究 (Si) 一下 Leetcode OJ 服务的稳定性如何。

过程

打开 Chrome 的开发者工具,发现只有 submitcheck 两种 ajax 请求,response 内容大概是这样的:

// `submit` response
{ "submission_id": 46823974 }

// first `check` response
{ "state": "STARTED" }

// second `check` response
{
  "lang": "javascript",
  "total_testcases": 25,
  "status_code": 10,
  "status_runtime": "152 ms",
  "run_success": true,
  "state": "SUCCESS",
  "total_correct": 25,
  "question_id": "17"
}

所以只要先模拟一个 submit 的 POST 请求,拿到 submission_id 后,再用这个 id 模拟 check 的 GET 请求,直到拿到最终的结果。

我直接把之前发送的两个 ajax 请求用 Curl 的形式保存下来:(感谢 Chrome ╰( ̄▽ ̄)╮)

然后我写了个 Nodejs 的小程序,每隔一分钟调用上面保存的两个脚本来进行一次提交,并把当次的执行速度保存到 Mongodb 中。代码我就不贴啦,有兴趣的话可以到 zry656565/Leetcode-Benchmark 看看。

结果

这个程序大概是在十一点左右的时候开始运行的。本以为一分钟一次的频率并不高,结果第二天起来一看,从凌晨四点多开始就没有数据了,自此我这个账号就提交不了代码了。。

当然啦,采集到了 300 多条数据也不能白费了,画个图出来看看吧。任意一个节点所提交的程序片段都是同一个,大概最终的结果是这样的:

(⊙o⊙)…本来想着是不是能找到某个 Leetcode 的服务器稍微稳定一点的时刻,不过似乎并不存在这样的时刻呢。呵呵,然并卵。不过好消息是,在事件发生的二十四小时以后,我发现我的账号解禁了,哈哈哈哈。

完。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78195.html

相关文章

  • 作死经历

    摘要:今天作了一波,解决过程还是比较曲折的,特此记录一下。第一次体验到了设置的好处,只需修改一点就好了还是启动不了的程序本以为配置完环境应该就完事大吉了。 今天作了一波,解决过程还是比较曲折的,特此记录一下。 作死行为 今天下午一时兴起,改了一下硬盘名,当时想着应该不会有问题,毕竟以前该磁盘的挂载点是一堆乱七八糟的字符,和那个1TB卷(这名字看着真不得劲)的硬盘名看着毫无关系。 (以下为修改...

    Eastboat 评论0 收藏0
  • 一次 Booking 线上面试中遇到的小问题

    从事 Android 开发工作要满 5 年了,虽然明白自己技术很一般,但是也总是期望能够有机会进入更好的平台发展。这不,因为机缘巧合有了一次 Booking 的面试邀请(是在 hackerrank 上),然后开始临时抱佛脚 (leetcode 走起),最终选择了一个周末去完成线上测试,结果我完全没预料到。本以为会被某道题的逻辑绕昏,结果哪知道被标准输入这个东西卡得死死的,现在就记录一下这次非常糟...

    lykops 评论0 收藏0
  • 一次Node项目的优化

    摘要:相关环境由于是一个几年前的项目,所以使用的是这样的。一些小提示本次优化笔记,并不会有什么文件的展示。将异步改为了串行,丧失了作为异步事件流的优势。 这两天针对一个Node项目进行了一波代码层面的优化,从响应时间上看,是一次很显著的提升。 一个纯粹给客户端提供接口的服务,没有涉及到页面渲染相关。 背景 首先这个项目是一个几年前的项目了,期间一直在新增需求,导致代码逻辑变得也比较复杂,接...

    dreamans 评论0 收藏0
  • 【FAILED】一次Python后端开发面试的经历

    摘要:正确的思路是等概率随机只取出共个数,每个数出现的概率也是相等的随机输出把一段代码改成,并增加单元测试。代码本身很简单,即使没学过也能看懂,改后的代码如下但是对于单元测试则仅限于听过的地步,需要用到,好像也有别的模块。 在拉勾上投了十几个公司,大部分都被标记为不合适,有两个给了面试机会,其中一个自己觉得肯定不会去的,也就没有去面试,另一个经历了一轮电话面加一轮现场笔试和面试,在此记录一下...

    kohoh_ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<