8.15

有一个全局最大最小值时,一个循环之后要判断是否需要更新这个全局变量
免得写if else语句

minValue = Math.min(count, minValue);

Triangle的几种解法:

  1. traverse
    因为每条路都要走,n行的三角形就有就有2(n-1)种路径。
  2. Divide Conquer
    递归的定义,从x, y出发 走到最底下,最短的值是什么
    往右走的值,往下走的值,选最小的加上本身,就是最短值
    和1一样,都会走到最下面那层,所以时间复杂度和1一样,所有 路都走了一遍,这也是DFS的本质:找到所有路径
  3. Divide Conquer + Memorization
    n层有(1+...+n)/2个点,每个点访问两次
    nb之处是存下了该点到底的最小值,以后再次访问的时候直接返回,不再计算一遍(这个点会被访问两次的原因是,从上面访问一次,从左上再访问一次)
  4. 多重循环
    记录到每个点为止的最短路径,再比较最底层

要素们
-递归的定义:接受什么参数,做什么事,返回什么值

你可能感兴趣的:(8.15)