每天写点算法。
所有算法的测试用例在Main.java中,运行这个文件便可以看到结果。
##二叉树遍历(递归与非递归)
2016年5月18日
##八皇后(回溯法)
2016年5月19日
##二叉排序树
2016年5月20日
##二叉树的高度(递归和非递归)
2016年5月21日
初中开始编程,之前很擅长递归变非递归。这两年算法题几乎没怎么做,所以最近自己多写写。
个人觉得非递归算法很有意思,校招迅雷的时候,跟面试官将了一下怎么将递归变非递归,当时他觉得太牛了。
很多人会觉得我代码太复杂,尤其昨天BST节点删除的代码估计很多人看了会吐血。我写算法一般不看别人的代码,完全是自己理解后写的,是适合自己的。我觉得时间复杂度都差不多,最多差个常数,所以代码复杂点无所谓。何况我自己写算法只是想保持思维,不是想考ACM。
##并查集
2016年5月22日
##骑士巡游(递归和非递归)
2016年5月23日
##阿克曼函数(Ackermann function)递归与非递归
2016年5月24日
##快速排序(递归与非递归)
2016年5月25日
自虐一番,写一个非递归快速排序,这次用state表示递归函数执行到的地方,并且将需要用到的临时变量i保存在stack中。
估计不会有人蛋疼地写一个非递归快排,呵呵!
我觉得非递归先放一下啦,还有好多算法要温习,所以最近暂时不写非递归了。
##八数码问题(九宫格问题)
2016年5月26日
这次练一下BFS,下次用A*解决问题。