当前位置 : 首页 » 文章分类 :  算法  »  LeetCode

LeetCode

开始LeetCode刷题,好长时间不写代码了,先从最最简单的开始。不怕题目简单弱智,先行动起来再说。
上次刷LeetCode还是14年底毕业找工作时,当时LeetCode还完全免费,只有一两百道题,我们实验室的大牛都是c++刷完一遍后又接着用java刷,我只做了一二十道题,惭愧。
现在LeetCode变得很高大上了,增加了付费订阅项目,而且除了算法题还有数据库题、shell脚本题、设计题等等,这是要搞IT面试的一站式模拟服务啊!


AC代码执行时间分布图

LeetCode很高端的是还能看自己submission的耗时在本题所有submission中的排名,并且,点击其他时间还能看对应的提交代码,可以多学习学习大牛的高效代码,如图:


344 Reverse String的Accepted Solutions Runtime Distribution

Discuss讨论区

每个题的讨论区也都有很多人晒出自己的代码和想法,多看看能学到不少东西。


344 Reverse String的讨论区

关于提交的Java代码

还有一点儿,关于java代码,只要提交的Solution类中包含指定名称的方法,且输入输出符合题意即可,其他的很随意,比如Solution类中还可以有其他方法,可以有自己测试用的main函数,甚至指定方法中还有其他控制台输出代码,都没问题,不会影响是否AC(当然由于无关代码太多导致执行太慢就不合适了)。


GitHub repo结构

GitHub上建了个repo,leetcode-java,收藏从现在开始在LeetCode上用Java刷的题,希望自己坚持下来。
https://github.com/masikkk/leetcode-java
这个repo的结构参考了好多leetcode题解库的结构,最后定成这样:

  • 整个repo是一个java工程,可直接在Eclipse中导入。repo根目录的README.md做一个整体介绍,累积多了可以弄个表格索引。
  • 代码的根文件夹是problems,也是默认的build path。
  • 根文件夹里面每个题是一个package,包名是题目名称(由于包名必须是java合法标识符,不能以数字开头,所以我定的格式是_编号_题目名
  • 每个题目的package中至少包含两个文件:
    • 一个java源文件,是解题代码,java文件名也是题目名称,便以区分,所以即使把所有java文件都放到同一目录下也不会重复;
    • 一个README.md,是相关笔记,可以写些解题思路,或者放上对应博客文章的链接。这样在GitHub上打开此题的目录时,自动会显示README.md的相关笔记。
  • 每个java文件中含两个类:
    • 一个名为Solution的非public类,其中是解题的方法,可以写多个方法,只要每次提交时想提交的方法以规定命名即可。
    • 一个和文件同名的public类,其中包含main函数,用以自己调用Solution类进行测试。

这样在文件系统上也正好是problems文件夹下每道题是单独的一个文件夹,还能默认以序号排序。
其实一开始我是直接repo下每个题一个文件夹,java类在每个文件夹的默认package中,但这样有个问题是每个题目的java文件中的Solution类由于在同一个作用域中会提示冲突,用题目名做类名又感觉不爽。


LeetCode题解repo参考


上一篇 LeetCode-已做题目索引

下一篇 2017年第四季度运动记录

阅读
967
阅读预计4分钟
创建日期 2018-01-01
修改日期 2018-01-05
类别
百度推荐