[leetcode417]. 太平洋大西洋水流问题

回溯法:
方法:从太平洋和大西洋分别往中间进行搜索(下一个节点的满足条件是比该节点的值大),使用两个数组分别记录每一个点是否可以流向的大西洋和是否可以流向太平洋,最后在对两个数组进行遍历,找到既能够去大西洋也能去太平洋的点。

class Solution {
public:
    vector> pacificAtlantic(vector>& matrix) {
        m=matrix.size();
        if(m==0)return res;
        n=matrix[0].size();
        vector> daxi(m,vector(n,false));
        vector> taipin(m,vector(n,false));
        for(int i=0;i tmp={i,j};
              res.push_back(tmp);
            }  
          }
        }
      return res;
    }
  int m;
  int n;
  vector> res;
  bool inArea(int x,int y)
  {
    return x>=0&&x=0&&y>& nums,int x,int y,vector>& memo)
  {
    for(int i=0;i<4;i++)
    {
      int newx=x+area[i][0];
      int newy=y+area[i][1];
      if(inArea(newx,newy)&&memo[newx][newy]==false&&nums[newx][newy]>=nums[x][y])
      {
        memo[newx][newy]=true;
        DFS(nums,newx,newy,memo);
      }
    }
  }
};

你可能感兴趣的:([leetcode417]. 太平洋大西洋水流问题)