Java実装LeetCode 417太平洋、大西洋の水問題

417太平洋大西洋の水問題

非負整数m×nのマトリックス所与本土上の個々のセルの高さを表しています。大陸の右の境界と下側境界の左にあると大陸の国境に「太平洋」、および「大西洋」。

流れのみの所定のアップ流れ、下、左、右方向に応じて、またはハイからローへと、同じ高さに流れることができます。

これらの水は「太平洋」の両方に流れることができるが、また、「大西洋」陸上ユニットの流れを調整するために特定してください。

ヒント:

順序は、出力座標は問題ではない
未満150及びm nは

例:

以下の5×5の行列を考えます:

  太平洋 ~   ~   ~   ~   ~ 
       ~  1   2   2   3  (5) *
       ~  3   2   3  (4) (4) *
       ~  2   4  (5)  3   1  *
       ~ (6) (7)  1   4   5  *
       ~ (5)  1   1   2   4  *
          *   *   *   *   * 大西洋

戻り値:

[0,4]、[1,3]、[1,4]、[2,2]、[3,0]、[3,1]、[4,0](括弧内の上図手段)。

class Solution {
         private int row, col;
    private int[][] grid;
    private List<List<Integer>> result = new ArrayList<>();

    public List<List<Integer>> pacificAtlantic(int[][] matrix) {
        row = matrix.length;
        if (row == 0) {
            return result;
        }
        col = matrix[0].length;
        grid = new int[row][col];
        for (int i = 0; i < row; i++) {
            helper(matrix, i, 0, 1);
        }
        for (int j = 0; j < col; j++) {
            helper(matrix, 0, j, 1);
        }
        for (int i = 0; i < row; i++) {
            helper(matrix, i, col - 1, 2);
        }
        for (int j = 0; j < col; j++) {
            helper(matrix, row - 1, j, 2);
        }
        return result;
    }

    private void helper(int[][] matrix, int i, int j, int v) {
        if (grid[i][j] == v || grid[i][j] == 3) {
            return;
        }
        grid[i][j] += v;
        if (grid[i][j] == 3) {
            List<Integer> temp = new ArrayList<>();
            temp.add(i);
            temp.add(j);
            result.add(temp);
        }
        if (i != 0 && matrix[i - 1][j] >= matrix[i][j]) {
            helper(matrix, i - 1, j, v);
        }
        if (j != 0 && matrix[i][j - 1] >= matrix[i][j]) {
            helper(matrix, i, j - 1, v);
        }
        if (i != row - 1 && matrix[i + 1][j] >= matrix[i][j]) {
            helper(matrix, i + 1, j, v);
        }
        if (j != col - 1 && matrix[i][j + 1] >= matrix[i][j]) {
            helper(matrix, i, j + 1, v);
        }
    }
 
}
リリース1532元の記事 ウォンの賞賛20000 + ビュー208万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104878984