zoukankan      html  css  js  c++  java
  • 417. Pacific Atlantic Water Flow

    https://leetcode.com/problems/pacific-atlantic-water-flow/description/

    class Solution {
    public:
        vector<pair<int, int>> pacificAtlantic(vector<vector<int>>& matrix) {
            vector<pair<int,int>> res;
            int m = matrix.size();  if (m == 0) return res;
            int n = matrix[0].size();
            vector<vector<int>> visited(m, vector<int>(n, 0));
            for (int i = 0; i < m; i++)
                dfs(matrix, visited, 1, i, 0);
            for (int j = 0; j < n; j++)
                dfs(matrix, visited, 1, 0, j);
            for (int i = 0; i < m; i++)
                dfs(matrix, visited, 2, i, n-1);
            for (int j = 0; j < n; j++)
                dfs(matrix, visited, 2, m-1, j);
            
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                    if (visited[i][j] == 3)
                        res.push_back({ i, j });
            return res;
        }
        void dfs(vector<vector<int>>& matrix, vector<vector<int>>& visited, int mark, int i, int j) {
            if (visited[i][j] & mark)    return;
            visited[i][j] |= mark;
            
            int m = matrix.size(), n = matrix[0].size();
            int dirs[] = { -1, 0, 1, 0, -1 };
            for (int d = 0; d < 4; d++) {
                int x = i + dirs[d];
                int y = j + dirs[d+1];
                if (x >= 0 && x < m && y >= 0 && y < n && matrix[x][y] >= matrix[i][j])
                    dfs(matrix, visited, mark, x, y);
            }
        }
    };
  • 相关阅读:
    python解决线性规划问题
    python解决多变量最优化问题
    python处理单变量优化
    java枚举类常用方法
    java实现十大排序算法
    python解方程
    python科学计算包
    python做微积分
    php定界符<<<EOF讲解
    一键安装LNMP/LAMP
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/9019892.html
Copyright © 2011-2022 走看看