lintcode 1410 · 矩阵注水【BFS 中等 vip】

news/2024/6/29 11:51:03 标签: 矩阵, 宽度优先

题目链接,描述

https://www.lintcode.com/problem/1410

给一个二维矩阵,每个grid的值代表地势的高度。水流只会沿上下左右流动,且必须从地势高的地方流向地势低的地方。视为矩阵四面环水,现在从(R,C)处注水,问水能否流到矩阵外面去?



输入的矩阵大小为n x n ,n <= 200。
保证每个高度均为正整数。
样例
样例1

输入: 
mat =
[
    [10,18,13],
    [9,8,7],
    [1,2,3]
] and R = 1, C = 1
输出: "YES"
解释: 
(1,1)(1,2)→ 流出。
样例2

输入: 
mat = 
[
    [10,18,13],
    [9,7,8],
    [1,11,3]
] and R = 1, C = 1
输出: "NO"
解释:(1,1)无法流向任何其他格点,故无法流出去。

思路

前置知识:BFS,Queue

参考代码

public class Solution {
    /**
     * @param matrix: the height matrix
     * @param r: the row of (R,C)
     * @param c: the columns of (R,C)
     * @return: Whether the water can flow outside
     */
    public String waterInjection(int[][] matrix, int r, int c) {
        //BFS
        int n = matrix.length,m=matrix[0].length;
        Queue<int[]> queue = new LinkedList<>();

        queue.add(new int[]{r,c});
        int[][] dirs = {{-1,0},{1,0},{0,-1},{0,1}};
        while (!queue.isEmpty()){
            int[] poll = queue.poll();
            int x = poll[0],y=poll[1];

            if(x ==0 || x ==n-1 || y ==0 || y==m-1)
                return "YES";

            for (int[] dir : dirs) {
                int x1 = x+dir[0],y1=y+dir[1];
                if(x1>=0 && x1<n && y1>=0 && y1<m && matrix[x][y] > matrix[x1][y1]){
                    queue.add(new int[]{x1,y1});
                }
            }
        }
        return "NO";
    }
}

http://www.niftyadmin.cn/n/4988416.html

相关文章

C#禁用或启用任务管理器

参考文档https://zhuanlan.zhihu.com/p/95156063 借助上述参考文档里的C#操作注册表类&#xff0c;禁用或启用任务管理器 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace HideTaskMgr { class Program { …

vue3全局事务总线mitt

vue3中$on&#xff0c;$off 和 $once 实例方法已被移除&#xff0c;组件实例不再实现事件触发接口。可以使用Mitt库&#xff08;其实就是发布订阅模式的设计&#xff09; 安装 $ npm install --save mitt 内置方法 发布事件 mybus.emit(自定义事件名称,数据);使用方法通过…

如何为你的公司选择正确的AIGC解决方案?

如何为你的公司选择正确的AIGC解决方案&#xff1f; 摘要引言词汇解释&#xff08;详细版本&#xff09;详细介绍1. 确定需求2. 考虑技术能力3. 评估可行性4. 比较不同供应商 代码快及其注释注意事项知识总结 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&…

Java的泛型和反射介绍

文章目录 1. 泛型1.2 泛型类1.2 泛型接口1.2.1 实现类直接确定1.2.2 实现类同样带泛型 1.3 泛型方法1.4 泛型上下限1.4.1 类型通配符1.4.2 泛型上下限 2. 反射2.1 加载类2.2 获取构造器2.2.1 获取构造器2.2.2 使用构造器 2.3 获取成员变量2.3.1 获取成员变量2.3.2 使用成员变量…

蜜桃星球 | 主理人,轻创业翻身副业,情趣赛道行业陪跑服务

我们为什么能在年纪轻轻的时候赚到钱&#xff1f; 一个重要原因就是&#xff0c;接触互联网后&#xff0c;我们所进入的所有行业&#xff0c;都是轻资产领域。 从流量到运营&#xff0c;所有的行业都是轻资产行业&#xff0c;都是不需要囤货的生意&#xff0c;只需要一根网线…

前端图片上传demo

1简单图片上传 <input type"file" id"upload"> <img src"" id"image"><script>var uploadFile document.getElementById("upload")uploadFile.onchange function(){var file uploadFile.files[0] //图…

Python怎么解决版本兼容性的问题? - 易智编译EaseEditing

Python的版本兼容性问题是在不同Python版本之间代码能否正常运行的问题。由于Python的语言和库在不同版本之间可能存在细微的差异&#xff0c;因此编写能够在多个Python版本上运行的代码是很重要的。 以下是一些解决Python版本兼容性问题的方法&#xff1a; 使用合适的语法&a…

怎么重装电脑系统并且分盘

重装电脑系统并且分盘是维护电脑的重要步骤之一。下面&#xff0c;我们将详细介绍如何重装电脑系统并且分盘。 步骤一&#xff1a;备份重要数据 在重装电脑系统之前&#xff0c;建议先备份所有重要数据。备份数据可以避免数据丢失&#xff0c;并且可以在系统崩溃时恢复数据。…