每天写点算法。
所有算法的测试用例在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*解决问题。
##双向链表
2016年5月27日
好久不写双向链表了,今天写一个。
##基于双栈的计算器
2016年5月28日
这是一道老题目。
##拓扑排序
2016年5月29日
##24点游戏
2016年5月30日
这个题目高中的时候用DFS做了好久。
现在尝试BFS,二十分钟就写好了,感觉自己现在写代码真的比高中的时候快好多。
做得比较吊的地方是输出的表达式是严格简化过的,不会出现多余括号。
##蛇形矩阵
2016年5月31日
纯自虐,写出了数学公式来解决蛇形矩阵,给出位置就可以用公式计算值。
具体推导过程见代码的注释部分。
##野人传教士过河
2016年6月1日
设有3个传教士(Missionaries)和3个野人(Cannibals)来到河边,打算乘一只船从右岸渡到左岸去。 该船的最大负荷能力为两个人(k=2)。在任何情况下:如果野人人数超过传教士人数,那么野人就会把传教士吃掉。 他们怎样才能用这条船安全地把所有人都渡过河去呢?
网上有人用dfs,这不很明显应该用bfs吗???
好忧伤的六一儿童节!!!
##Equal sum
2016年6月2日
不知道怎么说这个题。
##Find first in array
2016年6月3日
##Prim
2016年6月4日
##Kruskal
2016年6月5日
##Dijkstra
2016年6月6日
##二叉树宽度
2016年6月7日
##二叉树最大分数
2016年6月8日
##二叉树前中转后序遍历
2016年6月9日
##二叉树前后转中序遍历
2016年6月10日
##二叉树后中转前序遍历
2016年6月11日
##二分查找
2016年6月12日
So busy recently!