- 循环和递归是孪生兄弟,递归本质上还是通过栈的一系列操作来实现的,这些操作需要耗费时间和空间。在效率上是不如循环的。但是如果递归在逻辑上非常清晰。没有特定的要求,个人感觉用递归带来的程序的可读性是我更加青睐的,如果有要求就需要仔细权衡了
- 这一题之所以开始想叉了,是因为审题没审好。审题审好了,至少应该做到输入大概是什么形式,输出是什么形式,能不能用辅助内存,这些了然于胸
- 常见的一种思路就是画个草图,以一个实际的例子,这种方法也是可取的,但是要特别防范,一叶障目,将这种当做一般形式 或者数据量特别大的形式。一定要考虑各种情况
- 递增分为严格递增和非严格递增,如果没有说明是否是严格递增。我们应该考虑非严格递增的情况
- 个人理解在算法发面的进步应该体现在思考的过程上,当对算法有着深刻的理解的时候,思考过程应该很少走弯路。大都是有效过程。基于此,应该养成一个好习惯,在算法学习的过程中,如果遇到一个新的问题,应该在一张干净的纸上,工整的分析。这样可以清晰的记录下自己的思考的过程。当日后再来处理这类问题的时候,就可以与之对比。
Java集合框架
HashSet
一直认为Hashset存储无序,以前的HashSet直接打印出来,直接无序;现在打印出来是有序的。如果真的是这样那么treeset就没有意义了。因此我们看到的只是冰山一角,HashSet其实并不是真正有序。
像LinkList这种如果说有序是存取有序(先存的,取出时能够先取出),TreeSet这种是存储有序(元素之间的偏序关系)。讨论这个问题时,有必要说清楚是哪种