1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| // 63题 func uniquePathsWithObstacles(obstacleGrid [][]int) int { var length = len(obstacleGrid) var leng = len(obstacleGrid[0]) if length == 0 || leng == 0 { return 0 } if obstacleGrid[0][0] == 1 { return 0 } var tmp = make([][]int, length) for i := 0; i < length; i++ { for y := 0; y < leng; y++ { if i == 0 { if obstacleGrid[i][y] == 1 { tmp[i] = append(tmp[i], 0) continue } if y > 0 { if tmp[i][y-1] == 0 { tmp[i] = append(tmp[i], 0) continue } } tmp[i] = append(tmp[i], 1) continue } if y == 0 { if obstacleGrid[i][y] == 1 { tmp[i] = append(tmp[i], 0) continue } if i > 0 { if tmp[i-1][y] == 0 { tmp[i] = append(tmp[i], 0) continue } } tmp[i] = append(tmp[i], 1) continue } if obstacleGrid[i][y] == 1 { tmp[i] = append(tmp[i], 0) continue } tmp[i] = append(tmp[i], tmp[i][y-1]+tmp[i-1][y]) } } return tmp[len(tmp)-1][len(tmp[0])-1] }
//64题 最小路径 func minPathSum(grid [][]int) int { current := grid[0][0] var length = len(grid) var leng = len(grid[0]) var tmp = make([][]int, length) // 初始化 tmp[0] = append(tmp[0], grid[0][0]) for y := 1; y < leng; y++ { tmp[0] = append(tmp[0], tmp[0][y-1]+grid[0][y]) current = tmp[0][y] } for i := 1; i < length; i++ { for y := 0; y < leng; y++ { if y == 0 { tmp[i] = append(tmp[i], tmp[i-1][y]+grid[i][y]) current = tmp[i][y] continue } if tmp[i-1][y] > tmp[i][y-1] { tmp[i] = append(tmp[i], tmp[i][y-1]+grid[i][y]) } else { tmp[i] = append(tmp[i], tmp[i-1][y]+grid[i][y]) } current = tmp[i][y] } } return current }
|