记录我的LeetCode答题框架。
我在LeetCode中答过的题代码全部托管在GitHub:xiaobai050/leetcode
最初在LeetCode上学习在线编程时,由于不熟练,脑中还没有答题的框架,测试用例、待提交代码、入口方法之间的耦合过大,添加、修改测试用例需要修改源代码,导致调试效率过低,不够优雅。
为了尽可能方便调试,高效编辑,分离测试用例和算法实现,改进整理出了自己顺手的答题框架,记录下来。万事开头难,如果能帮助到想我当初一样迷茫的初学者,就更好不过了:)
目录结构:
- LeetCode ——项目名称,方便Eclipse内置Git对代码进行管理和多终端同步
- pid1 ——题目包,每个题目封装在一个单独的包中,包名用LeetCode题目编号表示
- Solution.java ——算法类,注意到LeetCode每道题目的代码类名为Solution
- Main.java ——包含主函数(控制逻辑、测试用例数组)、测试函数(测试结果输出、算法耗时)
- pid2
- Solution.java
- Main.java
- pid1 ——题目包,每个题目封装在一个单独的包中,包名用LeetCode题目编号表示
以具体题目为例:96. Unique Binary Search Trees
- 拿到题目,首先在创建题目包pid96;
- 新建类:Main.java,并创建方法: main 和 test;
- 新建类:Solution.java,将算法方法代码用题目中原始代码进行替换,并添加默认返回值;
- 在main方法中新建测试用例数组,并循环调用测试方法test(input);
- 在test方法中实例化Solution类,执行算法,并在首尾计时统计运行时间。
代码内容如下:
main.java
1 | package pid96; |
Solution.java
1 | package pid96; |
接下来开始写算法,全部在Solution.java中完成。
完成后如下:
1 | package pid96; |
运行结果:
1 | 0: output=1 |