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

floodfill算法系列一>太平洋大西洋水流问题

目录

  • 题目方法解析:
  • 代码设计:
  • 代码呈现:

题目方法解析:

这里是引用

代码设计:

这里是引用

代码呈现:

class Solution {
    int m,n;
    int[] dx = {0,0,-1,1};
    int[] dy = {-1,1,0,0};

    public List<List<Integer>> pacificAtlantic(int[][] heights) {
        m = heights.length; n = heights[0].length;
        boolean[][] pac = new boolean[m][n];
        boolean[][] atl = new boolean[m][n];

        //判断大西洋的水能否流到某一位置
        for(int i = 0; i < n; i++) dfs(heights,0,i,pac);
        for(int j = 0; j < m; j++) dfs(heights,j,0,pac);

        //判断太平洋的水能否流到某一位置
        for(int i = 0; i < m; i++) dfs(heights,i,n-1,atl);
        for(int j = 0; j < n; j++) dfs(heights,m-1,j,atl);

        List<List<Integer>> ret = new ArrayList<>();
        for(int i = 0; i < m; i++)
            for(int j = 0; j < n; j++){
                if(pac[i][j] && atl[i][j]){
                    List<Integer> tmp = new ArrayList<>();
                    tmp.add(i); tmp.add(j);
                    ret.add(tmp);
                }
            }

        return ret;
    }

    //封装出来一套标记遍历
    private void dfs(int[][] heights, int i, int j, boolean[][] vis){

        vis[i][j] = true;
        for(int k = 0; k < 4; k++){
            int x = i + dx[k]; int y = j + dy[k];
            if(x >= 0 && x < m && y >= 0 && y < n && !vis[x][y] && heights[x][y] >= heights[i][j]){
                dfs(heights,x,y,vis);
            }
        }
    }
}
http://www.dtcms.com/a/20098.html

相关文章:

  • 【第3章:卷积神经网络(CNN)——3.6 CNN的高级特性与优化策略】
  • 如何使用 DeepSeek 和 Dexscreener 构建免费的 AI 加密交易机器人?
  • EasyExcel 复杂填充
  • DeepSeek接入网络安全领域,AI高效驱动,重新定义网络防御边界!
  • UniApp 中制作一个横向滚动工具栏
  • MyBatis:动态SQL高级标签使用方法指南
  • 数据管理的四大基石:通俗解读数据中台、数据仓库、数据治理和主数据
  • 《千多桃花一世开》:南胥月为何爱暮悬铃
  • 输电杆塔沉降智能监测系统:如何用数据守护电网安全
  • ASP.NET Core SixLabors.ImageSharp v1.0 的图像实用程序类 web示例
  • uniapp可视化-活动报名表单系统-代码生成器
  • 【云安全】云原生- K8S kubeconfig 文件泄露
  • java中map实现函数式编程的原理
  • LVDS接口总结--(5)IDELAY3仿真
  • CEF132 编译指南 Linux 篇 - 开启 CEF 之旅:框架概览(一)
  • 微信小程序的请求函数封装(ts版本,uniapp开发)
  • 【电路笔记】-双向计数器
  • 【VUE】前端工程化与前端工程化与webpack
  • css简介
  • 哈希表(C语言版)
  • 【stm32】定时器输出PWM波形(hal库)
  • Qt的QPushButton样式设置
  • 半遮挡检测算法 Detecting Binocular Half-Occlusions
  • 19.4.2 -19.4.4 新增、修改、删除数据
  • SpringBoot服务器的采购上,服务器的数量和性能配置如何取舍【无标题】
  • Day2 25/2/15 SAT
  • electron打包基本教程
  • Flutter中 List列表中移除特定元素
  • QEMU 搭建arm linux开发环境
  • 纪念日倒数日项目的实现-【纪念时刻-时光集】