zoukankan      html  css  js  c++  java
  • 417 Pacific Atlantic Water Flow 太平洋大西洋水流

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

    C++:

    class Solution {
    public:
        vector<pair<int, int>> pacificAtlantic(vector<vector<int>>& matrix) {
            if (matrix.empty() || matrix[0].empty())
            {
                return {};
            }
            vector<pair<int, int>> res;
            int m = matrix.size(), n = matrix[0].size();
            vector<vector<bool>> pacific(m, vector<bool>(n, false));
            vector<vector<bool>> atlantic(m, vector<bool>(n, false));
            for (int i = 0; i < m; ++i)
            {
                dfs(matrix, pacific, INT_MIN, i, 0);
                dfs(matrix, atlantic, INT_MIN, i, n - 1);
            }
            for (int i = 0; i < n; ++i)
            {
                dfs(matrix, pacific, INT_MIN, 0, i);
                dfs(matrix, atlantic, INT_MIN, m - 1, i);
            }
            for (int i = 0; i < m; ++i)
            {
                for (int j = 0; j < n; ++j)
                {
                    if (pacific[i][j] && atlantic[i][j]) 
                    {
                        res.push_back({i, j});
                    }
                }
            }
            return res;
        }
        void dfs(vector<vector<int>>& matrix, vector<vector<bool>>& visited, int pre, int i, int j)
        {
            int m = matrix.size(), n = matrix[0].size();
            if (i < 0 || i >= m || j < 0 || j >= n || visited[i][j] || matrix[i][j] < pre)
            {
                return;
            }
            visited[i][j] = true;
            dfs(matrix, visited, matrix[i][j], i + 1, j);
            dfs(matrix, visited, matrix[i][j], i - 1, j);
            dfs(matrix, visited, matrix[i][j], i, j + 1);
            dfs(matrix, visited, matrix[i][j], i, j - 1);
        }
    };
    

     参考:https://www.cnblogs.com/grandyang/p/5962508.html

  • 相关阅读:
    MySQL (一)(未完成)
    HTML 学习笔记 CSS3 (边框)
    HTML 学习笔记 JavaScript (函数)
    HTML 学习笔记 JavaScript (对象)
    HTML 学习笔记 JavaScript (变量)
    HTML 学习笔记 JavaScript (实现)
    HTML 学习笔记 JavaScript(简介)
    iOS RunTime运行时(1):类与对象
    iOS UITableView 分割线从零开始
    HTML 学习笔记 CSS(选择器4)
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8856421.html
Copyright © 2011-2022 走看看