太平洋大西洋水流问题的思路探讨与源码
太平洋大西洋水流问题的题目如下图,该题属于数组类和搜索类型的题目,主要考察对于搜索方法的使用和二维数组结构的理解。本文的题目作者想到2种方法,分别是深度优先搜索DFS方法和广度优先搜索BFS方法,其中深度优先搜索方法使用Java进行编写,而广度优先搜索方法使用Python进行编写,当然这可能不是最优的解法,还希望各位大佬给出更快的算法。
本人认为该题目可以使用DFS深度优先搜索方法的思路进行解决,首先初始化数组和参数,然后定义一个遍历搜索的策略函数,在函数内部去从各个方向去进行深度优先搜索遍历二维数组,并将遍历后的结果保存到列表中。在搜索函数内部定义的是递归调用搜索的方法,判断当前元素是否还在矩阵内并且满足判断条件,如果是就一直迭代,直到遍历结束后返回最终结果。那么按照这个思路我们的Java代码如下:
#喷火龙与水箭龟
class Solution {
static int[][] dirs = {
{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
int[][] heights;
int m, n;
public List<List<Integer>> pacificAtlantic(int[][] heights) {
this.heights = heights;
this.m = heights.length;
this.n = heights[0].length;
boolean[][] pacific = new boolean[m][n];