zoukankan      html  css  js  c++  java
  • 剑指 Offer 12. 矩阵中的路径

    思路:

      1. 矩阵搜索,没有规定起始位置与终止位置的时间复杂度是  O(row*col*3^k)因为要遍历每一个位置作为起始节点,由于不能访问visited,所以每一步都只有3个选择,然后最差情况走完k-1步发现不匹配

      2. visited细节

        1)visited 用set,而不新建一个borad或在原board上修改,只要使用 (r,c) in set 判断只需要O(1)

        2)visited是添加坐标,而不是board[r][c]的值,因为visited是用来实现不走回头路

        3)   我们是在每一步dfs开头添加当前坐标进 visited,而不是添加下一步的

      3. 递归细节:

        1) 每次dfs开头的判断返回值都是 判断递归到最底层后的返回值,如

            a.返回叶子节点的空节点 return None 

            b.返回一个空的列表 []

            c.返回True or False

        2)   底层的dfs还需要有变量去接受,这样才能传回外层函数

            a.  root.left = dfs()   root.right = dfs()

            b.  resList = dfs() + [curVal]

            c.  if dfs() : return True

        3)   通过这样的方式,递归结果才一层一层的传递到外层函数

            a. 获得了一二叉树

            b. 获得了一个列表

            c. 得到了True or Flase

  • 相关阅读:
    暑假周进度总结(一)
    第十七周进度总结
    大二下学期软件工程概论总结
    第十六周进度总结
    程序员修炼之道读书笔记(三)
    程序员修炼之道读书笔记(二)
    《程序员修炼之道》读书笔记(一)
    第十五周进度总结
    python之路--day6---文件处理
    python之路--day6--字符编码
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/13683749.html
Copyright © 2011-2022 走看看