Hot 100 | 79. 单词搜索、200. 岛屿数量

news2024/11/29 4:49:30

LeetCode 79. 单词搜索

        给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

        单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

word = "ABCCED"、word = "SEE"、word = "ABCB"
  • 思路:
    • 主函数用 i,j 遍历 board:将每一个 board[i][j] 作为 word[0] 去匹配
    • 一旦遇到word[0](index 为0)👉调子函数,board[x][y] 置空,递归地到与之相邻的位置(上下左右)寻找 word[index + 1]
    • board[x][y] 置空:避免走回头路,上图中第三个例子,在已经匹配上“ABC”的情况下继续匹配‘B',左边的’B'已经用过,如果匹配第一个‘B’时不做置空处理👉重复使用board[0][1]
  • 代码:
class Solution {
public:
    // board[x][y]作为word[i]能不能找到word
    bool backtracking(vector<vector<char>>& board, int x, int y, const string& word, int i) {
        // 终止条件
        if (i >= word.size()) return true;
        if (x < 0 || x >= board.size() || y < 0 || y >= board[0].size() || board[x][y] != word[i]) return false;
        // board[x][y] == word[i]
        board[x][y] = ' '; // 防止匹配word(i, size)时,重复用board[x][y]
        // 继续到上下左右找 word[i + 1]
        bool res = backtracking(board, x - 1, y, word, i + 1) || backtracking(board, x + 1, y, word, i + 1) || backtracking(board, x, y - 1, word, i + 1) || backtracking(board, x, y + 1, word, i + 1);
        if (res) return true;
        // 恢复现场
        board[x][y] = word[i];
        return false;
    }
    bool exist(vector<vector<char>>& board, string word) {
        for (int i = 0; i < board.size(); ++i) {
            for (int j = 0; j < board[0].size(); ++j) {
                if (backtracking(board, i, j, word, 0)) return true;
            }
        }
        return false;
    }
};

LeetCode 200. 岛屿数量

        给你一个由 '1'(陆地)和 '0'(水)组成的二维网格 grid,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向、竖直方向上相邻的陆地连接形成。

        此外,你可以假设该网格的四条边均被水包围。

  • 思路:
    • 主函数用 i,j 遍历 grid:到每一个 grid[i][j] 找 ‘1’
    • 一旦遇到 ‘1’,岛数++👉调子函数,置为 ‘0’,递归地处理与之相邻的 ‘1’(上下左右)
  • 代码:
class Solution {
public:
    int result = 0;
    // 处理 grid[x][y] 及相邻位置的 '1'
    void backtracking(vector<vector<char>>& grid, int x, int y) {
        // 终止条件
        if (x < 0 || x >= grid.size() || y < 0 || y >= grid[0].size() || grid[x][y] != '1') return;
        // grid[x][y] == '1'
        grid[x][y] = '0';
        backtracking(grid, x - 1, y); // 上
        backtracking(grid, x + 1, y); // 下
        backtracking(grid, x, y - 1); // 左
        backtracking(grid, x, y + 1); // 右
    }
    int numIslands(vector<vector<char>>& grid) {
        for (int i = 0; i < grid.size(); ++i) {
            for (int j = 0; j < grid[0].size(); ++j) {
                if (grid[i][j] == '1') {
                    ++result;
                    backtracking(grid, i, j);
                }
            }
        }
        return result;
    }
};

⭐注意grid中存放的是 字符0、字符1 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT-4——比GPT-3强100倍

GPT-4——比GPT-3强100倍 当前世界上最强大的人工智能系统当属ChatGPT。推出2个月用户数就突破1亿。ChatGPT是当下最炙手可热的话题&#xff0c;科技圈几乎人人都在讨论。这边ChatGPT的热度还在不断攀升&#xff0c;另一边来自《纽约时报》的最新报道称ChatGPT即将被自家超越&…

chatGPT在命令行聊天实现方法

一个简单、轻量级的 shell 脚本&#xff0c;无需安装 python 或 node.js&#xff0c;即可从终端使用 OpenAI 的 chatGPT 和 DALL-E。该脚本将completions端点和text-davinci-003模型用于 chatGPT 以及images/generations用于生成图像的端点。 支持功能 1、从终端与 GPT 聊天 …

某某银行行面试题目汇总--HashMap为什么要扩容

一、HashMap啥时候扩容&#xff0c;为什么扩容&#xff1f; HashMap的默认大小是16。在实际开发过程中&#xff0c;我们需要去存储的数据量往往是大于存储容器的默认大小的。所以&#xff0c;出现容量默认大小不能满足需求时&#xff0c;就需要扩容。而这个扩容的动作是由集合自…

MySQL数据库常用命令汇总(全网最全)

目录 数据库常用命令 数据库的创建 数据表的操作 表数据的增删查改 分组与函数查询 运算符&#xff1a;数学运算符 连接查询 多表查询 修改语句 删除语句 字符查询like MySQL练习 总结感谢每一个认真阅读我文章的人&#xff01;&#xff01;&#xff01; 重点&…

DS期末复习卷(七)

一、选择题(30分) 1&#xff0e;设某无向图有n个顶点&#xff0c;则该无向图的邻接表中有&#xff08; B &#xff09;个表头结点。 (A) 2n (B) n ( C) n/2 (D) n(n-1) n 表头结点数顶点数 2&#xff0e;设无向图G中有n个顶点&#xff0c;则该无向图的最小生成树上有&#xff…

mysql修改root用户密码

一、记得密码 登录mysql执行以下语句 mysql -u root -p 按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应: 然后输入正确的密码&#xff0c;进入mysql 然后修改密码&#xff1a; mysql> ALTER USER rootlocalhost IDENTIFIED BY 123456; mysql> flush p…

二叉树——路径总和

路径总和 链接 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点…

风光并网对电网电能质量影响的matlab/simulink仿真建模

之前配电网的一个项目&#xff0c;我把其中一部分分享给大家&#xff0c;电能质量影响这部分&#xff0c;我在模型中主要体现的就是不同容量的光伏、风电接入&#xff0c;对并网点的电压影响情况。 前言 考虑到我国的地理因素以及气候影响问题&#xff0c;我国的风电开发相应的…

华为分布式存储(FusionStorage)

Server SAN SAN&#xff1a;存储区域网络 IP SAN&#xff1a;以太网交换机和普通网线连接的存储&#xff0c;交换机之间做堆叠FC SAN&#xff1a;FC&#xff08;光纤&#xff09;交换机和光纤连接的存储&#xff0c;交换机之间做级联Server SAN&#xff1a;可以使用以太网交换机…

75岁彪马再发NFT 复活美洲狮IP

在“运动品牌Web3”的潮流里&#xff0c;彪马&#xff08;PUMA&#xff09;绝对算是发烧友级别。2月22日&#xff0c;这家德国服装品牌的新NFT又来了&#xff0c;总量10000个Super PUMA NFT中&#xff0c;将有4000个以0.15 ETH&#xff08;约为255美元&#xff09;价格正式公售…

C++设计模式(18)——模板方法模式

亦称&#xff1a; Template Method 意图 模板方法模式是一种行为设计模式&#xff0c; 它在超类中定义了一个算法的框架&#xff0c; 允许子类在不修改结构的情况下重写算法的特定步骤。 问题 假如你正在开发一款分析公司文档的数据挖掘程序。 用户需要向程序输入各种格式…

ICRA 2023 | 首个联合暗光增强和深度估计的自监督方法STEPS

原文链接&#xff1a;https://www.techbeat.net/article-info?id4629 作者&#xff1a;郑宇鹏 本文中&#xff0c;我们提出了STEPS&#xff0c;第一个自监督框架来联合学习图像增强和夜间深度估计的方法。它可以同时训练图像增强网络和深度估计网络&#xff0c;并利用了图像增…

【JAVA程序设计】(C00103)基于Springboot+Thymeleaf智能分类的相册管理系统——有文档

基于SpringbootThymeleaf智能分类的相册管理系统——有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于SpringbootThymeleaf智能分类的相册管理系统共分为二个角色&#xff1a;系统管理员、用户 管理员角色包含以下功能&#xff1a; 登录、用户管理&#xff08;增…

LeetCode-131. 分割回文串

目录题目思路回溯题目来源 131. 分割回文串 题目思路 切割问题类似组合问题。 例如对于字符串abcdef&#xff1a; 组合问题&#xff1a;选取一个a之后&#xff0c;在bcdef中再去选取第二个&#xff0c;选取b之后在cdef中再选取第三个…。切割问题&#xff1a;切割一个a之后&…

现在的00后,实在是太卷了

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里条…

ES mapping 详解

nested 类型&#xff1f;&#xff1f;&#xff1f; _all _routing; ES-mapping Elasticsearch根据业务创建映射mapping结构分析&#xff1a;keyword和text&#xff08;一&#xff09;_elasticsearch keyword mapping_周全全的博客-CSDN博客 0.Mapping样例 {"mapping…

【微信小程序】--JSON 配置文件作用(三)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…

【Vue源码解析】Vue虚拟dom和diff算法

Vue虚拟dom和diff算法1. 简介2. 搭建环境1. 安装snabbdom2. 安装webpack5并配置3、函数3.1 虚拟节点vnode的属性3.2 使用h函数 创建虚拟节点3.3 使用patch函数 将虚拟节点上DOM树3.4 h函数嵌套使用&#xff0c;得到虚拟DOM树&#xff08;重要&#xff09;3.5 patchVnode函数3.6…

Mac 上搭建 iOS WebDriverAgent 环境

文章目录Mac环境搭建配置 Xcode 生成 WDA常见问题brew 安装失败Mac环境搭建 macOS 系统电脑&#xff1a;12.6.2 Xcode&#xff1a;14.0.1&#xff08;xcodebuild -version&#xff09; appium Desktop&#xff1a;1.21.0 (下载链接) Appium Desktop 1.22.0 &#xff0c;从该版…

Redis 高级数据类型

文章目录一、Bitmaps&#xff1a;属性状态统计二、HyperLogLog&#xff1a;基数统计三、GEO&#xff1a;地理位置信息计算提示&#xff1a;以下是本篇文章正文内容&#xff0c;Redis系列学习将会持续更新 一、Bitmaps&#xff1a;属性状态统计 Bitmaps类型&#xff1a; 统计一…