​LeetCode解法汇总5-正则表达式匹配​

这篇具有很好参考价值的文章主要介绍了​LeetCode解法汇总5-正则表达式匹配​。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣

描述:

你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。

示例:

输入:
[
  [0,2,1,0],
  [0,1,0,1],
  [1,1,0,1],
  [0,1,0,1]
]
输出: [1,2,4]

提示:

  • 0 < len(land) <= 1000
  • 0 < len(land[i]) <= 1000

解题思路:

* 解题思路:

* 因为担心递归遍历会导致堆栈溢出,所以采取的队列的方式。

* 遍历每个点,如果是海域则加入到queue中,并且记录size=1,然后取出queue中的头部,每个点都向周围8个方向探测,如果也为海域,则也加入到queue中,并且size+1;

* 最后把size加入到record中。文章来源地址https://www.toymoban.com/news/detail-496910.html

代码:

class Solution_MS_1619
{
public:
    static constexpr int directions[8][2] = {{1, 0}, {1, -1}, {0, -1}, {-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}};

    vector<int> pondSizes(vector<vector<int>> &land)
    {
        vector<int> record;
        for (int y = 0; y < land.size(); y++)
        {
            for (int x = 0; x < land[0].size(); x++)
            {
                if (land[y][x] != 0)
                {
                    continue;
                }
                int size = 1;
                queue<pair<int, int>> qu;
                qu.push(make_pair(x, y));
                land[y][x] = 1;
                while (!qu.empty())
                {
                    pair<int, int> top = qu.front();
                    qu.pop();
                    for (int i = 0; i < 8; i++)
                    {
                        int nx = top.first + directions[i][0];
                        int ny = top.second + directions[i][1];
                        if (nx < 0 || ny < 0 || nx >= land[0].size() || ny >= land.size())
                        {
                            continue;
                        }
                        if (land[ny][nx] == 0)
                        {
                            size++;
                            land[ny][nx] = 1;
                            qu.push(make_pair(nx, ny));
                        }
                    }
                }
                record.push_back(size);
            }
        }
        sort(record.begin(), record.end());
        return record;
    }
};

到了这里,关于​LeetCode解法汇总5-正则表达式匹配​的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式 (用于灵活匹配文本的表达式)

    目录 . * 用于匹配任意单个字符,除了换行符。 例如使用正则表达式 a.b, 它可以匹配aab、acb、a#b 用于匹配前一个字符零次或多次。 例如,使用正则表达式 ab*c ,它可以匹配 \\\"ac\\\"、\\\"abc\\\"、\\\"abbc\\\",因为 b* 表示匹配零个或多个字符 \\\"b\\\"。所以,这个表达式可以匹配 \\\"ac\\\"(零个 \\\"b\\\"),

    2024年01月16日
    浏览(64)
  • Java 正则表达式匹配

    正则表达式: 定义一个搜索模式的字符串。 正则表达式可以用于搜索、编辑和操作文本。 正则对文本的分析或修改过程为:首先正则表达式应用的是文本字符串(text/string),它会以定义的模式从左到右匹配文本,每个源字符只匹配一次。 正则表达式 匹配 this is text 精确匹配

    2024年02月06日
    浏览(63)
  • 正则表达式的神奇世界:表达、匹配和提取

    正则表达式,这个看起来像密林中的迷宫的工具,既神秘又令人着迷。它是编程世界中的一门魔法,有着神奇的能力。你是否曾经在寻找或解析文本时感到束手无策?或许你想要从海量数据中提取特定信息?这正是正则表达式可以派上用场的时候。本文将带你探索这个神奇的

    2024年02月07日
    浏览(64)
  • Java 之正则表达式语法及常用正则表达式汇总

    正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称

    2024年02月09日
    浏览(71)
  • VSCode 正则表达式 匹配多行

    VS Code 正则表达式匹配多行 (.|n)*? 案例1: str(.|n)*?, 案例2: const(.|n)*?}$ 案例3: fn(.|n)*?},

    2024年02月02日
    浏览(49)
  • 【动态规划】通配符匹配与正则表达式匹配

    题目描述: 给你一个输入字符串 (s) 和一个字符模式 § ,请你实现一个支持 ‘?’ 和 ‘*’ 匹配规则的通配符匹配: ‘?’ 可以匹配任何单个字符。 ‘*’ 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而

    2024年02月07日
    浏览(64)
  • 正则表达式的匹配(py编程)

    1. 匹配单个字符 在上一小节中,了解到通过re模块能够完成使用正则表达式来匹配字符串 本小节,将要讲解正则表达式的单字符匹配 代码 功能 . 匹配任意1个字符(除了n) [ ] 匹配[ ]中列举的字符 d 匹配数字,即0-9 D 匹配非数字,即不是数字 s 匹配空白,即 空格,tab键

    2024年02月02日
    浏览(77)
  • 正则表达式包含数字和字符匹配

    至少6位。 pattern : (?=. [0-9])(?=. [A-Za-z])[0-9A-Za-z]{6,} 正则表达式中的“?=”是一个正向预查字符,它的意思是匹配前一个字符出现的最少一次。具体来说,当一个匹配出现时,它会检查前一个字符是否符合要求,如果符合,则继续匹配下一个字符,否则停止匹配。

    2024年02月06日
    浏览(58)
  • 详解正则表达式匹配方法 match()

    在前端开发中,正则表达式是一大利器。所以我们这次就来讨论下match()方法。 match本身是JavaScript语言中字符串对象的一个方法,该方法的签名是 match([string] | [RegExp]) 它的参数既可以是一个字符串,也可以是一个正则表达式。该方法绝大多数都是要使用正则表达式的,所以参

    2024年02月11日
    浏览(50)
  • 剑指 Offer 19. 正则表达式匹配

    剑指 Offer 19. 正则表达式匹配 初始化要考虑主串为空字符串,模式串为 a*b*c* 的形式。 一般情况时,根据模式串是 普通字符 、 \\\'.\\\' 、 \\\'*\\\' 分情况考虑。为 \\\'*\\\' 时,考虑 匹配0次 和 匹配多次 的情况,匹配多次时要注意判断前提是能匹配。

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包