标签:code color += visit integer NPU ati mon direction
原题链接在这里:https://leetcode.com/problems/path-with-maximum-gold/
题目:
In a gold mine grid
of size m * n
, each cell in this mine has an integer representing the amount of gold in that cell, 0
if it is empty.
Return the maximum amount of gold you can collect under the conditions:
0
gold.Example 1:
Input: grid = [[0,6,0],[5,8,7],[0,9,0]] Output: 24 Explanation: [[0,6,0], [5,8,7], [0,9,0]] Path to get the maximum gold, 9 -> 8 -> 7.
Example 2:
Input: grid = [[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]] Output: 28 Explanation: [[1,0,7], [2,0,6], [3,4,5], [0,3,0], [9,0,20]] Path to get the maximum gold, 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7.
Constraints:
1 <= grid.length, grid[i].length <= 15
0 <= grid[i][j] <= 100
题解:
For each cell in the grid, start DFS.
DFS state is current index and current sum. And it should return starting at current index, the maximum glod it could get.
If current index is illegal, return current sum.
Otherwise, accumlate grid[i][j] to sum. And for each direction, do DFS. Get the maximum among 4 directions, and return.
Before return, backtracking grid[i][j] to its original value.
Time Complexity: expontential.
Space: O(m*n). m = grid.length. n = grid[0].length.
AC Java:
1 class Solution { 2 int [][] grid; 3 int m; 4 int n; 5 int [][] dirs = new int[][]{{0, 1}, {0, -1}, {-1, 0}, {1, 0}}; 6 7 public int getMaximumGold(int[][] grid) { 8 if(grid == null || grid.length == 0 || grid[0].length == 0){ 9 return 0; 10 } 11 12 int res = 0; 13 this.grid = grid; 14 this.m = grid.length; 15 this.n = grid[0].length; 16 for(int i = 0; i<m; i++){ 17 for(int j = 0; j<n; j++){ 18 int sum = dfs(i, j, 0); 19 res = Math.max(res, sum); 20 } 21 } 22 23 return res; 24 } 25 26 private int dfs(int i, int j, int sum){ 27 if(i<0 || i>=m || j<0 || j>=n || grid[i][j]==0){ 28 return sum; 29 } 30 31 32 sum += grid[i][j]; 33 int temp = grid[i][j]; 34 grid[i][j] = 0; 35 36 int max = 0; 37 for(int [] dir : dirs){ 38 int x = i + dir[0]; 39 int y = j + dir[1]; 40 41 max = Math.max(max, dfs(x, y, sum)); 42 } 43 44 grid[i][j] = temp; 45 return max; 46 } 47 }
LeetCode 1219. Path with Maximum Gold
标签:code color += visit integer NPU ati mon direction
原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/11791324.html