当前位置: 首页 > news >正文

leecode417.太平洋大西洋水流问题

 

 由海洋逆推回到经过的坐标,用dfs方式将海洋逆推回去的坐标都设置为true,那么只要这个坐标能被太平洋和大西洋逆推为true,那么就添加到结果集中

class Solution {
private:
    void pacificAtlantic(vector<vector<int>>& heights,vector<vector<bool>>& visited,int x,int y){
        if(visited[x][y])
            return;
        else{
            visited[x][y]=true;
            
            if(y+1<heights[0].size()&&heights[x][y+1]>=heights[x][y])
                pacificAtlantic(heights,visited,x,y+1);
            if(x+1<heights.size()&&heights[x+1][y]>=heights[x][y])
                pacificAtlantic(heights,visited,x+1,y);
            if(y-1>=0&&heights[x][y-1]>=heights[x][y])
                pacificAtlantic(heights,visited,x,y-1);
            if(x-1>=0&&heights[x-1][y]>=heights[x][y])
                pacificAtlantic(heights,visited,x-1,y);
        }
    }
public:
    vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {
        vector<vector<int>> result;

        int m=heights.size();
        int n=heights[0].size();

        vector<vector<bool>> pacific(m,vector<bool>(n,false));
        vector<vector<bool>> atlantic(m,vector<bool>(n,false));

        //分别将太平洋可达的坐标和大西洋可达的坐标都设置为true
        for(int i=0;i<m;i++){
            pacificAtlantic(heights,pacific,i,0);
            pacificAtlantic(heights,atlantic,i,n-1);
        }
        for(int i=0;i<n;i++){
            pacificAtlantic(heights,pacific,0,i);
            pacificAtlantic(heights,atlantic,m-1,i);
        }

        //太平洋和大西洋都可达的加入到结果数组中
        for(int i=0;i<m;i++)
            for(int j=0;j<n;j++)
                if(pacific[i][j]&&atlantic[i][j])
                    result.push_back({i,j});
        return result;
    }
};

 

相关文章:

  • PyQt5 - Groove 启用高 DPI 支持,使得应用程序能够自动适应不同的屏幕分辨率
  • numpy学习笔记6:np.sin(a) 的详细解释
  • 《声音的未来:语音识别文献解读》专栏介绍及其文章解读目录
  • 微学习:提高企业培训效率的创新方式
  • 挖矿------获取以太坊测试币
  • 基于大模型的慢性鼻窦炎全周期预测与治疗方案研究报告
  • 云钥科技工业相机定制服务,助力企业实现智能智造
  • PCL 高斯函数拟合(正太分布)
  • 《TCP/IP网络编程》学习笔记 | Chapter 19:Windows 平台下线程的使用
  • 【Java项目】基于JSP的智能停车场管理系统
  • 蓝桥杯刷题 Day2 AC自动机(二次加强版)
  • linux 命令 vim
  • 若依前端框架增删改查
  • c++领域展开第十七幕——STL(vector容器的模拟实现以及迭代器失效问题)超详细!!!!
  • 三个线程按顺序交替打印 A B C
  • Power Apps 技术分享:使用控件的相对布局
  • 组态王Kingview配置为OPCUA服务器的一些问题处理
  • [快乐学坊management_1] With Cursor | Mysql设计 | 服务接口设计与开发
  • PyTorch 深度学习实战(17):Asynchronous Advantage Actor-Critic (A3C) 算法与并行训练
  • ABeam 德硕 | 在华外企ESG议题选择指南(5)—— 国际与国内ESG议题选择研究:SASB可持续会计准则解读
  • 张广智︱“编年事辑”:打开学人心路历程的窗户
  • 基金经理调仓引发大金融板块拉升?公募新规落地究竟利好哪些板块
  • “一百零一个愿望——汉字艺术展”亮相意大利威尼斯
  • 中国乒协坚决抵制恶意造谣,刘国梁21日将前往多哈参加国际乒联会议
  • 蚊媒传染病、手足口病……上海疾控发布近期防病提示
  • 浙能集团原董事长童亚辉被查,还是杭州市书法家协会主席