当前位置: 首页 > 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;
    }
};

 

http://www.dtcms.com/a/75978.html

相关文章:

  • 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可持续会计准则解读
  • Unity 云渲染本地部署方案
  • 检查 YAML 文件格式是否正确的命令 yamllint
  • Vala编程语言教程-数据类型
  • 【iOS】SwiftUI 路由管理(NavigationStack)
  • 深入理解 Linux 的 top 命令:实时监控系统性能
  • Unity 解决TMP_Text 文字显示异常的问题
  • 手势调控屏幕亮度:Python + OpenCV + Mediapipe 打造智能交互体验
  • 记事本(基于JAVAGUI界面)
  • 一次模拟Windows挖矿病毒应急响应的流程及思路
  • Linux系统管理与编程05:网络管理番外篇