0%

总结

2018年4月11日 下午3:54

2018/8/2:

仅仅通过遍历去解释所有的问题是片面的,更多的应该是对思路的总结

技巧:

  1. 做题的时间一定要花在分析上!!!想好了再动手—1363
  2. 不要罗列所有的情况,而是要尽量按操作为单位去思考—402
  3. 要学会将最终问题转化,比如要求一个序列,那么栈/队列来表示不断形成的序列。——402
  4. 学会分析问题的方法:从最特殊的情况推理到普通的情况地牢游戏
    1. 从特殊—>一般
  5. 从少到多的迭代思想去不断的逼近最后的结果!—315

遍历的对象:

  1. 递归也是一种遍历,递归函数本身就是一次遍历,这个函数就是我们的遍历的元素
    1. 因为一次函数的调用是处理一个元素,我们是要遍历元素,所以,必然需要遍历函数,这也就成了我们的递归。但是需要注意的是,函数其中还包括着操作,而对象元素仅仅是一个数据,并没有操作。
  2. 动态规划也是可以通过遍历去解释的198. House Robber
    1. 这里的遍历对象元素是:01 02 03 04 …. 0~(n-1)
      1. 这里的数字是只下标!
    2. 一个dp[i] 与一个对象元素对应,边遍历边修改dp数组本身。
      1. 这个的不同点在于要让最后一个最大。
  3. 动态规划遍历的对象是01 02….0~(n-1),但是加上一个条件:最右边的单个元素的一定要! 53. Maximum Subarray
  4. 表面上我们遍历的的是string::s中的一个个元素,其实这一个个元素代表着“以这个元素结尾的一个【满足题目要求】的一个子串”。——76
    1. 这时我们就可以说:我们遍历的“元素”,变成了一个个的[满足要求]的子串

遍历:

  1. 我觉得所有的题都可以成为遍历数组 ——55+55_2
    1. 递归也不例外
  2. 每次遍历的对象元素是整个序列,而不是原先数组中的某个元素——315
  3. 遍历的对象元素选错了 322. Coin Change
  4. 因为我们分析问题的时候,使用的是简单的例子,容易缺少循环迭代的过程—-poj1363

数据的角度:

  1. 在遍历的过程中修改数据本身——114
  2. 遍历的对象是一个边建立边遍历的队列——199
  3. map来记录我们遍历的过程——49
  4. 数据结构选取的巧妙?某一个操作能用当前选择的数据结构直接实现,而不用在写循环呀、判断呀啥的——76
  5. 我们设置的数据类型也很重要,能让逻辑变得简单——315 + 23