zoukankan      html  css  js  c++  java
  • 980. Unique Paths III

    题目来源:
     https://leetcode.com/problems/unique-paths-iii/
    自我感觉难度/真实难度:
     
    题意:
     
    分析:

     回溯法,直接DFS就可以了

    自己的代码:
    class Solution:
        def uniquePathsIII(self, grid: List[List[int]]) -> int:
            res=0
            n=len(grid)
            m=len(grid[0])
            for i in range(n):
                for j in range(m):
                    if grid[i][j]==1:
                        start_i,start_j=i,j
                    if grid[i][j]==2:
                        end_i,end_j=i,j
            def dfs(grid,k,l):
                if grid[k][l]==-1:
                    return 
                if grid[k][l]==2:
                    for i in range(n):
                        for j in range(m):
                            if grid[n][m]==0:
                                return
                    res+=1
                    return 
                grid[k][l]=-1    
                left,right,up,down=l-1,l+1,k-1,k+1
                if left>=0:
                    dfs(grid,k,left)
                if right<=m:
                    dfs(grid,k,right)
                if up>=0:
                    dfs(grid,up,l)
                if down<=n:
                    dfs(grid,down,l)
            dfs(grid,start_i,start_j)
            return res
                
    代码效率/结果:

    虽然有思路,但是写出来的代码细节通不过,注意退回去的时候

    优秀代码:
    代码效率/结果:
     
    自己优化后的代码:
     
    反思改进策略:

    1.函数输入变量设计的时候,我们要的是输入每次不同的东西。如果是全局的东西,我们可以不当作输入变量

    2.回溯法,如果需要改变全局变量的值,那么从DFS后面回去的时候,要改回来!!!

    写题时间时长:
  • 相关阅读:
    数组
    css动画
    mui 常用手势
    ejs 用到的语法
    css 高度塌陷
    SQL 用到的操作符
    position: relative;导致页面卡顿
    h5 图片生成
    li之间的间隙问题
    虚拟机扩容mac
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10476019.html
Copyright © 2011-2022 走看看