摘要: 原题地址递归写法谁都会,看看非递归写法。对于二叉树的前序和中序遍历的非递归写法都很简单,只需要一个最普通的栈即可实现,唯独后续遍历有点麻烦,如果不借助额外变量没法记住究竟遍历了几个儿子。所以,最直接的想法就是在栈中记录到底遍历了几个儿子。代码: 1 vector postorderTraversal... 阅读全文
posted @ 2015-01-19 17:08 李舜阳 阅读(507) 评论(0) 推荐(0)
摘要: 原题地址以前Leetcode的测试数据比较弱,单纯用链表做也能过,现在就不行了,大数据会超时。通常大家都是用map+双向链表做的。我曾经尝试用C++的list容器来写,后来发现map没法保存list的iterator,总是报错,我也不知道为什么。后来只好手写双向链表,真是痛苦啊,一不小心就会出错。怪... 阅读全文
posted @ 2015-01-19 16:11 李舜阳 阅读(233) 评论(0) 推荐(0)
摘要: 原题地址方法I:固定一个点,枚举剩下的点所构成直线(斜率)先固定一个点,然后计算该点到其他所有点的斜率,最后统计得到最多的共线的点的个数。时间复杂度为O(n^2),需要借助map数据结构保存中间结果,空间复杂度为O(n)。这种方法最大的问题是需要计算斜率,需要用到除法,可能会有数据精度的问题。方法I... 阅读全文
posted @ 2015-01-19 14:03 李舜阳 阅读(631) 评论(0) 推荐(0)
摘要: 原题地址说个题外话,我一直想不明白题目里rotate这个词,感觉用shift更合适啊仔细分析题目,有如下两个性质:1. 对于一个没有折叠过的数组,最小值一定是第一个元素。2. 对于一个折叠过的数组,最小值一定出现在折叠的地方。因此,要找最小值,就把以上两种情况下的最小值都看看,选一个最小的就行了。这... 阅读全文
posted @ 2015-01-19 11:50 李舜阳 阅读(464) 评论(0) 推荐(0)