The Wayback Machine - https://web.archive.org/web/20201101112854/https://github.com/rongyi/lintcode
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
img
 
 
src
 
 
 
 
 
 

README.org

LintCode题解

Sun Jun 10 15:32:31 2018,对这个网站基本无感,速度太慢了,所以改换其他网站了。 Always be coding!

选择语言为C++11,兼具底层细节又有丰富类库来避免重复造轮子。

所有代码均通过Lintcode在线检测, 同时也考虑了诸如内存泄露等产品级需求, 命名规范参考了Google C++命名[fn:1], 许多代码中注释的部分比如List/Tree的定义, 在源码中都打开了, 为的是本地调试需要。 所以在进行在线检测时请把相关定义删掉以免造成在线编译不通过。

基本上代码都经过clang-format format过的(和gofmt类似)。

./img/all.png

简要说明:

举例来说明: 一个lintcode题目的url为: http://www.lintcode.com/zh-cn/problem/word-search-ii/ 则对应的文件名为 ./src/word-search-ii.cc, 在该文件中第一行的内容即为此URL的注释(此行内容是根据文件名再生成自动添加上)如果你是在Emacs中编辑此文件则可以在URL上M-x browse-url来打开这个链接, 因此对于题目的说明不会在文件中重复, 当然缺点就是你得有网络. 或者你可以在有网络的情况下根据这里的文件名写一个shell用wget全部download下来, 这样就可以躲到深山老林里刷这些题目了。如果有多个解答,有些函数名就会有些后缀,或者是方法或者是TLE这种超时版本,目的在于方便理解。

环境选择:

OS选择Ubuntu,作为一个后端程序员在Linux上开发习惯了,好处就是甚至可以从XWindow层去自定义、修改一些快捷键。OS的设计者 认为你自己知道自己在做什么,所以不拦你,当你GDB调试时不会跳出框子给你安全方面的确认(说你呢,MacOS)。

编辑器选择:

Emacs outshines all other editing software in approximately the same way that the noonday sun does the stars. It is not just bigger and brighter; it simply makes everything else vanish – In the Beginning was the Command Line[fn:2]

写代码是一种不断人机交互过程,输入、验证做这样的循环迭代过程,好的编辑器可以加速这一过程的处理。Vim是,Emacs也是。 如果你使用Vim, 有15年使用经验的人的一些总结[fn:3]可以参考一下,四年前他写的11年经验总结[fn:4]同样可以参考一下, 使用Emacs推荐…额,因为每个使用Emacs的方式都不一样(Emacs Hell)就不推荐了。

这里具体涉及到的刷题方面的编辑器功能有:

  1. 快速编译: 刷题一般都是单个文件,没有Makefile,所以这里需要对单个文件进行快速编译和运行。一般这种情况是编辑,之后切换窗口到命令行执行相关操作遇到问题再回到编辑器中,这些循环单调规律的调试过程同样可以用代码在Emacs中固定下来。所以可以在一个Editor中实现这些功能。
  2. gdb集成: GUD模式可以方便的进行gdb调试,对递归的理解,对一些边缘case的确认,当然还有debug。
  3. 常用模板的快速插入
  4. git提交: magit是我认为最好用的git工具,没有之一,push/commit完全在一个编辑流当中,这里不展开。
  5. lint、代码补全:我选择的YCMD和Emacs客户端来进行补全。Flyheck来进行代码lint。

上述过程的一些截图

快速编译的过程

./img/compile.gif

单步调试

./img/debug.gif

清明到来,我就38岁了,日暮乡关之感如针锥心

薄雾从村头飘来,坐在橘园里,一些病果尚在枝头

蒲公英又一次开出黄色的花,如一年一发的寂寞

能够思念的人越来越少。我渐渐原谅了人世的凉薄

如果回到过去,我确定会把爱过的人再爱一遍

把疼痛过的再疼一遍

但是我多么希望没有病痛的日子,一年或者一星期

在春天的风里跳舞,踮起脚旋转

他能看见也好,看不见也罢

我只有一个愿望:生命静好,余生平安

在春天的列车上有人为我让座

不是因为我摇晃的身体

– 《人到中年》 余秀华

Footnotes

[fn:1] https://google.github.io/styleguide/cppguide.html

[fn:2] http://cristal.inria.fr/~weis/info/commandline.html

[fn:3] https://statico.github.io/vim3.html

[fn:4] https://statico.github.io/vim.html

About

lintcode题解/练习

Topics

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.