2018年4月11日 下午3:54
2018/8/2:
仅仅通过遍历去解释所有的问题是片面的,更多的应该是对思路的总结
技巧:
- 做题的时间一定要花在分析上!!!想好了再动手—1363
- 不要罗列所有的情况,而是要尽量按操作为单位去思考—402
- 要学会将最终问题转化,比如要求一个序列,那么栈/队列来表示不断形成的序列。——402
- 学会分析问题的方法:从最特殊的情况推理到普通的情况地牢游戏
- 从特殊—>一般
- 从少到多的迭代思想去不断的逼近最后的结果!—315
遍历的对象:
- 递归也是一种遍历,递归函数本身就是一次遍历,这个函数就是我们的遍历的元素。
- 因为一次函数的调用是处理一个元素,我们是要遍历元素,所以,必然需要遍历函数,这也就成了我们的递归。但是需要注意的是,函数其中还包括着操作,而对象元素仅仅是一个数据,并没有操作。
- 动态规划也是可以通过遍历去解释的!198. House Robber
- 这里的遍历对象元素是:0
1 02 03 04 …. 0~(n-1)- 这里的数字是只下标!
- 一个dp[i] 与一个对象元素对应,边遍历边修改dp数组本身。
- 这个的不同点在于要让最后一个最大。
- 这里的遍历对象元素是:0
- 动态规划遍历的对象是0
1 02….0~(n-1),但是加上一个条件:最右边的单个元素的一定要! 53. Maximum Subarray - 表面上我们遍历的的是string::s中的一个个元素,其实这一个个元素代表着“以这个元素结尾的一个【满足题目要求】的一个子串”。——76
- 这时我们就可以说:我们遍历的“元素”,变成了一个个的[满足要求]的子串
遍历:
- 我觉得所有的题都可以成为遍历数组 ——55+55_2
- 递归也不例外
- 每次遍历的对象元素是整个序列,而不是原先数组中的某个元素——315
- 遍历的对象元素选错了 322. Coin Change
- 因为我们分析问题的时候,使用的是简单的例子,容易缺少循环迭代的过程—-poj1363
数据的角度:
- 在遍历的过程中修改数据本身——114
- 遍历的对象是一个边建立边遍历的队列——199
- map来记录我们遍历的过程——49
- 数据结构选取的巧妙?某一个操作能用当前选择的数据结构直接实现,而不用在写循环呀、判断呀啥的——76
- 我们设置的数据类型也很重要,能让逻辑变得简单——315 + 23