LeetCode包括main函数的答题框架(Java+Eclipse)
http://zhangnai.xin/2016/09/20/LeetCode-Framework/
目录结构:
- LeetCode ——项目名称,方便Eclipse内置Git对代码进行管理和多终端同步
- pid1 ——题目包,每个题目封装在一个单独的包中,包名用LeetCode题目编号表示
- Solution.java ——算法类,注意到LeetCode每道题目的代码类名为Solution
- main.java ——包含主函数(控制逻辑、测试用例数组)、测试函数(测试结果输出、算法耗时)
 
- pid2 
- Solution.java
- main.java
 
 
- pid1 ——题目包,每个题目封装在一个单独的包中,包名用LeetCode题目编号表示
以具体题目为例:96. Unique Binary Search Trees
- 拿到题目,首先在Eclipse中建立题目包pid96;
- 新建类:main.java,并创建方法: main 和 test;
- 新建类:Solution.java,将算法方法代码用题目中原始代码进行替换,并添加默认返回值;
- 在main方法中新建测试用例数组,并循环调用测试模块test(ito);
- 在test方法中实例化Solution类,添加计时语句,并在计时语句内部加入执行算法语句。
至此,答题框架搭建完毕,代码内容如下:
main.java
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package pid96; /** * Unique Binary Search Trees * * Given n, how many structurally unique BST's * (binary search trees) that store values 1...n? * * For example, Given n = 3, there are a total of 5 unique BST's. * * 1 3 3 2 1 * \ / / / \ \ * 3 2 1 1 3 2 * / / \ \ * 2 1 2 3 * * @author 白 * */ public class main { public static void main(String[] args) { int[] testTable = { 0, 1, 2, 3, 4, 5, 6, 10, }; for (int ito : testTable) { test(ito); } } private static void test(int ito) { Solution solution = new Solution(); int rtn; long begin = System.currentTimeMillis(); rtn = solution.numTrees(ito); long end = System.currentTimeMillis(); System.out.println(ito + ": rtn=" + rtn); System.out.println(); System.out.println("耗时:" + (end - begin) + "ms"); System.out.println("-------------------"); } } | 
Solution.java
| 1 2 3 4 5 6 7 | package pid96; public class Solution { public int numTrees(int n) { return 0; } } | 
接下来开始写算法,全部在Solution.java中完成。
完成后如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | package pid96; public class Solution { public int numTrees(int n) { if(n<=1)return 1; if(n==2)return 2; int [] table= new int [n+1]; table[0]=1; table[1]=1; table[2]=2; for(int i=2;i<n;i++) for(int j=0;j<=i;j++) table[i+1]+=table[i-j]*table[j]; return table[n]; } } | 
运行结果:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 0: rtn=1 耗时:0ms ------------------- 1: rtn=1 耗时:0ms ------------------- 2: rtn=2 耗时:0ms ------------------- 3: rtn=5 耗时:0ms ------------------- 4: rtn=14 耗时:0ms ------------------- 5: rtn=42 耗时:0ms ------------------- 6: rtn=132 耗时:0ms ------------------- 10: rtn=16796 耗时:0ms ------------------- | 
LeetCode包括main函数的答题框架(Java+Eclipse)的更多相关文章
- Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)
		Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java Mai ... 
- 1-Java类结构和main函数
		目录 Java类 main函数 1.Java类 - 类是java中最基础的逻辑单位 java中所有的内容都要放在类的范围中 - 类的构成 成员变量/属性 成员方法/函数 - java文件必须以.jav ... 
- (转)Java程序利用main函数中args参数实现参数的传递
		Java程序利用main函数中args参数实现参数的传递 1.运行Java程序的同时,可以通过输入参数给main函数中的接收参数数组args[],供程序内部使用!即当你在Java命令行后面带上参数,J ... 
- 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)
		俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔.对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中 ... 
- Java的初始化执行顺序(父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数)
		1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量- ... 
- java基础9 main函数、this、static、super、final、instanceof 关键字
		一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问 原因:为了保证jvm在任何情况下都可以访问到main法2.static:静态,静态可以让jvm调用更方便,不需要用 ... 
- 菜鸟nginx源代码剖析 框架篇(一) 从main函数看nginx启动流程
		菜鸟nginx源代码剖析 框架篇(一) 从main函数看nginx启动流程 Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ... 
- eclipse的maven项目,如何使用java run main函数
		项目使用maven管理,一般说来就使用jetty:run了.但是对于做功能测试和集成测试的用例,需要使用自定义的quickrun来运行进行测试环境的参数设定和功能隔离,google一番发现maven有 ... 
- [Java基础]java的main函数
		1.main函数详解 main在编程中的形式:public static void main(String[] args) { - } public : 公共的. 权限是最大,在任何情况下都可以访问. ... 
随机推荐
- CA单向认证和双向认证的区别?
			1:单向认证,内容会被串改吗? 
- Java5,Java 6,Java 7,Java 8新特性
			Java5: 1.泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处. Parameterized Type作为参数 ... 
- python protobuf序列化repeated运用
			下面是proto描述文件的定义 message Person { required string name = 1; required int32 id = 2; optional string em ... 
- C# 控制台程序(Console Application )启动后隐藏
			背景 前段时间给项目编写了数据适配器,读取其他系统的数据后推送到MQ上,我们的系统通过订阅MQ的方式来获取.由于其他系统支持C#编程,且为了一时方便,选择了C#的控制台程序. 最近用户在使用中,总是不 ... 
- C++并发编程 02  数据共享
			在<C++并发编程实战>这本书中第3章主要将的是多线程之间的数据共享同步问题.在多线程之间需要进行数据同步的主要是条件竞争. 1 std::lock_guard<std::mute ... 
- react 中state与props
			react 中state与props 1.state与props props是只读属性,只有在组件被实例化的时候可以赋值,之后的任何时候都无法改变该值.如果试图修改该值时,控制台会报错 only re ... 
- IO流程及优化
			http://blog.csdn.net/xypzwl/article/details/51416883 一.存储设备的存储原理 机械硬盘: 机械硬盘使用磁性物质作为存储介质,用N.S极性来代表0或1 ... 
- windows 下,查看并杀死进程
			今天启动我的play framework 服务 提示 could not bind on 9000.还是个error.这让我很不解,昨天还好好的. 怀疑是9000呗某个服务占了,在linux下还挺好办 ... 
- 了解ES6
			内容: 1.ES6介绍及基础 2.模块.类和继承 3.ES6高级特性 4.Generator和Iterator 5.异步编程 6.函数相关 内容参考:<ES6 标准入门> ES6标准阅读链 ... 
- python中的运算符及表达式及常用内置函数
			知识内容: 1.运算符与表达式 2.for\while初步了解 3.常用内置函数 一.运算符与表达式 python与其他语言一样支持大多数算数运算符.关系运算符.逻辑运算符以及位运算符,并且有和大多数 ... 
