力扣刷题记录(29)LeetCode:695、1020、130

695. 岛屿的最大面积

这道题和计算岛屿周长类似,在这里dfs的功能就是由一块陆地出发,找出这块陆地所在的岛屿并返回岛屿面积。

class Solution {
public:
    int dfs(vector<vector<int>>& grid,int i,int j)
    {
        if(i<0||i>=grid.size()) return 0;
        if(j<0||j>=grid[0].size())  return 0;
        if(grid[i][j]==2||grid[i][j]==0)   return 0;
        grid[i][j]=2;
        return 1+dfs(grid,i-1,j)+dfs(grid,i+1,j)+dfs(grid,i,j-1)+dfs(grid,i,j+1);
    }
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        int ans=0;
        for(int i=0;i<grid.size();i++)
        {
            for(int j=0;j<grid[0].size();j++)
            {
                if(grid[i][j]==1)
                    ans=max(dfs(grid,i,j),ans);
            }
        }
        return ans;
    }
};

 1020. 飞地的数量

 

 这和求岛屿面积类似,唯一的不同点是与边界相连的岛屿不用计算面积。因此在遍历岛屿的过程中如果遇到与边界相连的岛屿我们就返回一个负数,如果岛屿没有与边界相连我们就返回陆地的数量。

class Solution {
public:
    int dfs(vector<vector<int>>& grid,int i,int j)
    {
        if(i<0||i>=grid.size())     return -250000;
        if(j<0||j>=grid[0].size())  return -250000;
        if(grid[i][j]==2||grid[i][j]==0)    return 0;
        grid[i][j]=2;
        return 1+dfs(grid,i-1,j)+dfs(grid,i+1,j)+dfs(grid,i,j-1)+dfs(grid,i,j+1);
    }
    int numEnclaves(vector<vector<int>>& grid) {
        int ans=0;
        for(int i=0;i<grid.size();i++)
        {
            for(int j=0;j<grid[0].size();j++)
            {
                int num=0;
                if(grid[i][j]==1)
                    num=dfs(grid,i,j);
                if(num>0)
                    ans+=num;
            }
        }
        return ans;
    }
};

130. 被围绕的区域

实际上这题还是在求飞地,把飞地变成水域。我们需要申请一个空间来记录我们遍历过的元素。dfs的功能是判断该岛屿是否是飞地,如果是我们就将其变成水域。

class Solution {
public:
    bool dfs(vector<vector<char>>& board,int i,int j,vector<vector<bool>>& isVisited)
    {
        if(i<0||i>=board.size())    return false;
        if(j<0||j>=board[0].size()) return false;
        if(isVisited[i][j]) return true;
        if(board[i][j]=='X')  return true;
        isVisited[i][j]=true;
        bool up=dfs(board,i-1,j,isVisited);
        bool down=dfs(board,i+1,j,isVisited);
        bool left=dfs(board,i,j-1,isVisited);
        bool right=dfs(board,i,j+1,isVisited);
        return up&&down&&left&&right;
    }
    void fill(vector<vector<char>>& board,int i,int j)
    {
        if(i<0||i>=board.size())    return;
        if(j<0||j>=board[0].size()) return;
        if(board[i][j]=='X')    return;
        board[i][j]='X';
        fill(board,i-1,j);
        fill(board,i+1,j);
        fill(board,i,j-1);
        fill(board,i,j+1);
    }
    void solve(vector<vector<char>>& board) {
        vector<vector<bool>> isVisited(board.size(),vector<bool>(board[0].size(),false));
        for(int i=0;i<board.size();i++)
        {
            for(int j=0;j<board[0].size();j++)
            {
                if(board[i][j]=='O'&&isVisited[i][j]==false)
                    if(dfs(board,i,j,isVisited))
                        fill(board,i,j);
            }
        }
    }
};

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 获取地址信息(uniapp)

参考API地址&#xff1a;微信小程序JavaScript SDK | 腾讯位置服务 <script> // 引入SDK核心类&#xff0c;js文件根据自己业务&#xff0c;位置可自行放置var QQMapWX require(../../js/uploadImg/qqmap-wx-jssdk.js);export default {data(){return{qqmapsdk:}},onL…

【Spring Cloud】组件概念详解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Spring Cloud》。&#x1f3af;&#x1f3af; &am…

Hive精选10道面试题

1.Hive内部表和外部表的区别&#xff1f; 内部表的数据由Hive管理&#xff0c;外部表的数据不由Hive管理。 在Hive中删除内部表后&#xff0c;不仅会删除元数据还会删除存储数据&#xff0c; 在Hive中删除外部表后&#xff0c;只会删除元数据但不会删除存储数据。 内部表一旦…

odoo17 | 用户界面的基本交互

前言 现在我们已经创建了我们的新模型及其 相应的访问权限&#xff0c;是时候了 与用户界面交互。 在本章结束时&#xff0c;我们将创建几个菜单以访问默认列表 和窗体视图。 数据文件 &#xff08;XML&#xff09; Odoo在很大程度上是数据驱动的&#xff0c;因此模块定义的…

pytoch安装

pytoch安装 1. 准备工作1.1 需要提前安装的软件 2. 安装pyTorch我遇到的问题 3. 显卡测试4. CPU与GPU切换方法4.1 创建张量4.2 第一种切换方法4.3 第二种切换方法 1. 准备工作 1.1 需要提前安装的软件 Anaconda 史上最全最详细的Anaconda安装教程CUDA CUDA安装教程&#xff0…

Python笔记06-文件操作

文章目录 文件的编码文件读取文件写入文件追加 文件的编码 编码技术即&#xff1a;翻译的规则&#xff0c;记录了如何将内容翻译成二进制&#xff0c;以及如何将二进制翻译回可识别内容。算机中有许多可用编码&#xff1a;UTF-8、GBK、Big5等 不同的编码&#xff0c;将内容翻译…

其他排序(基数排序,希尔排序和桶排序)(数据结构课设篇3,python版)(排序综合)

本篇博客主要详细讲解一下其他排序&#xff08;基数排序&#xff0c;希尔排序和桶排序&#xff09;也是排序综合系列里最后一篇博客。第一篇博客讲解的是LowB三人组&#xff08;冒泡排序&#xff0c;插入排序&#xff0c;选择排序&#xff09;&#xff08;数据结构课设篇1&…

【C++】深入了解构造函数之初始化列表

目录 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 2&#xff09;不同成员变量赋值 2、初始化列表 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值…

勇哥带您手搓一个信息发布系统CMS(3)--抽象栏目模板设计

目录 引言 一、栏目数据库设计。 二、Controller层方法设计 引言 在CMS开发过程中&#xff0c;一般如果采用thymeleaf开发&#xff0c;那就需要每一个页面配一个Controller中的方法指定页面&#xff0c;但是这样就会导致Controller中的方法非常多&#xff0c;而且也会破坏C…

yarn -v和vue -V报错环境变量配置

node官网下载安装好node后&#xff0c;node-v npm-v查看版本号&#xff0c;安装好node后会自动安装好npm和配置好全局环境变量 全局安装 yarn npm i yarn -g 查看是否安装成功 yarn -v 安装 vue/cli yarn global add vue/cli 查看是否安装成功 vue -V 或vue --version 如果…

STL——deque详解

目录 &#x1f4a1;基本概念 &#x1f4a1;deque构造函数 &#x1f4a1;deque赋值操作 &#x1f4a1;deque大小 &#x1f4a1;deque插入和删除 &#x1f4a1;deque数据存取 &#x1f4a1;deque排序 &#x1f4a1;基本概念 功能: 双端数组&#xff0c;可以对头端进行插入删…

VmWare虚拟机的安装

VmWare官方最新版下载地址 vmware官方下载地址 安装流程 安装成功验证 安装完成之后&#xff0c;打开网络中心&#xff0c;一定要确认这里多出两个网络连接&#xff0c;才证明Vmware已经安装成功

Kali Linux——获取root权限

目录 一、设置root密码 【操作命令】 【操作实例】 二、临时获取root权限 【操作命令】 【操作实例】 三、提升用户到root 1、获取root权限 2、进入/etc/passwd 3、查看root账号ID 4、找到需要修改的用户 5、输入i&#xff0c;进入编辑模式 6、把用户的ID改成跟r…

【好书推荐-第二期】《实战AI大模型 》:带你走进大模型GPTs、AIGC的世界(李开复、周鸿祎、颜水成倾力推荐)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

数据结构c语言版:顺序表

顺序表的定义 顺序表是一种线性数据结构&#xff0c;它由一组连续的存储单元组成&#xff0c;用来存储具有相同数据类型的元素。顺序表中的元素按照逻辑顺序依次存放&#xff0c;并且可以通过索引来访问和修改元素。 顺序表的实现方式 两种&#xff1a;静态顺序表和动态顺序表。…

华为mstp、vrrp、ospf、isis、bgp等综合一起排错

最终实现左边私网和右边私网全部ping通 SW1 vlan batch 12 34 stp region-configuration //mstp配置 region-name test instance 12 vlan 12 instance 34 vlan 34 active region-configuration interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass …

基于 Python+Neo4j+医药数据,构建了一个知识图谱的自动问答系统

知识图谱是目前自然语言处理的一个热门方向。目前知识图谱在各个领域全面开花&#xff0c;如教育、医疗、司法、金融等。 本项目立足医药领域&#xff0c;以垂直型医药网站为数据来源&#xff0c;以疾病为核心&#xff0c;构建起一个包含7类规模为4.4万的知识实体&#xff0c;…

Apifox使用外部文件完成接口预处理

pm.executeAsync(filePath, args, options) filePath string 外部程序路径 args string[] 参数。调用 jar 包中的指定方法时&#xff0c;会使用 JSON.stringify 进行转换。除此之外非 >string 类型会进行隐式类型转换自动转换为 string 类型。 options Object command str…

数据结构期末模拟试卷

一、判断题 1.关键路径是AOE网中从源点到汇点的最短路径。&#xff08;F&#xff09; 在AOE网中&#xff0c;从源点到汇点最长的路径称为关键路径&#xff0c;在关键路径上的活动称为关键活动 2. 二叉排序树的查找效率和二叉排序树的髙度有关。&#xff08;T&#xff09; 最好…

【ARM 处理器】程序存储详解

本篇文章主要介绍ARM处理器&#xff0c;Code, RO-data,RW-data,ZI-data 知识以及程序存储情况 目录 1. 专业词汇2. 程序存储3. 程序空间计算 1. 专业词汇 Code &#xff1a; 代码区&#xff0c;存储在 ROM 区域RO-data&#xff1a;Read Only data&#xff0c;即只读数据域&…