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

汕头建站方案好的营销网站

汕头建站方案,好的营销网站,甘肃最近发生的重大事情,网页视频下载工具哪个好【每日刷题】Day143 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 200. 岛屿数量 - 力扣(LeetCode) 2. LCR 105. 岛屿的最大面积 - 力扣&…

【每日刷题】Day143

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 200. 岛屿数量 - 力扣(LeetCode)

2. LCR 105. 岛屿的最大面积 - 力扣(LeetCode)

3. 130. 被围绕的区域 - 力扣(LeetCode)

1. 200. 岛屿数量 - 力扣(LeetCode)

//思路:floodfill算法+哈希

class Solution {

public:

    int ans = 0;

    void dfs(vector<vector<char>>& grid,int i,int j,vector<vector<bool>>& hash)

    {

        if(i>=grid.size()||i<0||j>=grid[0].size()||j<0||grid[i][j]=='0')//回溯:越界 || 当前位置为字符 '0'

            return;

       

        hash[i][j] = true;//每访问一个 ‘1’ ,将该位置设为 "已访问"

//上、下、左、右递归

        if(i-1>=0&&!hash[i-1][j])

            dfs(grid,i-1,j,hash);

        if(i+1<=grid.size()&&!hash[i+1][j])

            dfs(grid,i+1,j,hash);

        if(j-1>=0&&!hash[i][j-1])

            dfs(grid,i,j-1,hash);

        if(j+1<=grid[0].size()&&!hash[i][j+1])

            dfs(grid,i,j+1,hash);

    }

    int numIslands(vector<vector<char>>& grid)

    {

        vector<vector<bool>> hash(301,vector<bool>(301));

        for(int i = 0;i<grid.size();i++)

        {

            for(int j = 0;j<grid[0].size();j++)

            {

                if(!hash[i][j]&&grid[i][j]=='1')//在该位置进行 dfs 的条件

                {

                    ans++;

                    dfs(grid,i,j,hash);

                }

            }

        }

        return ans;

    }

};

2. LCR 105. 岛屿的最大面积 - 力扣(LeetCode)

//思路:floodfill算法+哈希

//这些题的思路基本都是一样的,实在是没必要重复画那么多决策树。

//本题的思路与上一题 "岛屿数量" 是完全类似的:

//遍历数组,遇到没有访问过的位置 并且 该位置值为1,在该位置进行 dfs,计算当前位置所组成岛屿的面积;dfs结束后与结果进行比较,记录较大值。

class Solution {

public:

    int ans = 0;

    void dfs(vector<vector<int>>& grid,int i,int j,vector<vector<bool>>& hash,int& tmp)

    {

        if(i>=grid.size()||i<0||j>=grid[0].size()||j<0||!grid[i][j])//回溯:越界 || 当前位置值为0

            return;

        hash[i][j] = true;//每到一个 1 位置,将该位置设为 "已访问"

        tmp++;//统计岛屿面积

//上、下、左、右依次递归

        if(i-1>=0&&!hash[i-1][j])

            dfs(grid,i-1,j,hash,tmp);

        if(i+1<=grid.size()&&!hash[i+1][j])

            dfs(grid,i+1,j,hash,tmp);

        if(j-1>=0&&!hash[i][j-1])

            dfs(grid,i,j-1,hash,tmp);

        if(j+1<=grid[0].size()&&!hash[i][j+1])

            dfs(grid,i,j+1,hash,tmp);

    }

    int maxAreaOfIsland(vector<vector<int>>& grid)

    {

        vector<vector<bool>> hash(51,vector<bool>(51));

        for(int i = 0;i<grid.size();i++)

        {

            for(int j = 0;j<grid[0].size();j++)

            {

                int tmp = 0;//tmp用于统计面积

                if(!hash[i][j]&&grid[i][j])

                {

                    dfs(grid,i,j,hash,tmp);

                    ans = ans>tmp?ans:tmp;//比较取较大值

                }

            }

        }

        return ans;

    }

};

3. 130. 被围绕的区域 - 力扣(LeetCode)

//思路:floodfill+哈希

//本题思路还是类似,唯一的区别在于:我们如何区分哪些相连的 'O' 区域需要填充为 'X',哪些不需要?

class Solution {

public:

    void dfs(vector<vector<char>>& board,int i,int j,vector<vector<bool>>& hash)

    {

        if(i>=board.size()||i<0||j>=board[0].size()||j<0||board[i][j]=='X')//回溯:越界 || 当前位置为 'X'

            return;

        hash[i][j] = true;//将当前位置标记为 "已访问"

        board[i][j] = 'X';//并将当前位置的 'O' 更改为 'X'

//上、下、左、右递归

        if(i-1>=0&&!hash[i-1][j])

            dfs(board,i-1,j,hash);

        if(i+1<=board.size()&&!hash[i+1][j])

            dfs(board,i+1,j,hash);

        if(j-1>=0&&!hash[i][j-1])

            dfs(board,i,j-1,hash);

        if(j+1<=board[0].size()&&!hash[i][j+1])

            dfs(board,i,j+1,hash);

    }

    void solve(vector<vector<char>>& board)

    {

        vector<vector<bool>> hash(201,vector<bool>(201));

        vector<vector<char>> copy_board = board;//"替死鬼"数组,帮助我们标记 "不能更改" 的区域

//遍历 列边界,标记 列边界的 "不能更改" 的区域

        for(int i = 0;i<copy_board.size();i++)

        {

            if(copy_board[i][0]=='O')

                dfs(copy_board,i,0,hash);

            if(copy_board[i][copy_board[0].size()-1]=='O')

                dfs(copy_board,i,copy_board[0].size()-1,hash);

        }

       

//遍历 行边界,标记 行边界的 "不能更改" 的区域

        for(int j = 0;j<copy_board[0].size();j++)

        {

            if(copy_board[0][j]=='O')

                dfs(copy_board,0,j,hash);

            if(copy_board[copy_board.size()-1][j]=='O')

                dfs(copy_board,copy_board.size()-1,j,hash);

        }

//"替死鬼"数组帮我们标记了好了 "不能更改" 的区域,这里放心大胆地遍历board数组进行更改即可

        for(int i = 0;i<board.size();i++)

        {

            for(int j = 0;j<board[0].size();j++)

            {

                if(!hash[i][j]&&board[i][j]=='O')

                    dfs(board,i,j,hash);

            }

        }

    }

};

http://www.hengruixuexiao.com/news/53314.html

相关文章:

  • 中国建设银行网站用户名是什么优化合作平台
  • 网站建设怎么骗人贵州seo和网络推广
  • 秦皇岛最新通知网站seo推广排名
  • 如何做好网站seo自媒体培训学校
  • 物业管理网站开发背景如何在各种网站投放广告
  • 合肥珍岛公司做网站推广怎么样河北网站建设公司排名
  • 免费网站建设哪家好淘宝推广
  • 规划网站的总结河北百度推广电话
  • 网址源码在线查看网站seo规划
  • 城市房产网优化推广方案
  • 怎样制作印章码迷seo
  • 帝国cms 门户网站seo的基本步骤是什么
  • 清远 网站建设营销百度app下载手机版
  • 内网做网站外网访问站长工具5g
  • wordpress添加网站图标腾讯企点qq
  • 有没有做家具特卖的网站网络运营seo是什么
  • 固始城乡建设局的网站怎么打不开了超级seo外链工具
  • 太原网站排名以客为尊百度投诉中心24小时电话
  • 中国建行个人登录入口郑州seo优化
  • 谷歌云做网站服务器北京seo网站设计
  • 十大电商代运营服务商优化seo设置
  • 重庆免费网站建站模板爱站数据官网
  • web开发就是做网站吗seo关键词排名点击工具
  • 网站建设 镇江百度免费网站制作
  • 骏驰网站建设企业网站制作公司
  • 网站开发工程师职位要求深圳优化公司
  • 网址大全123上网邵阳seo优化
  • 自己做网站能赚到广告费吗推广百度百科
  • 小清新网站设计网站优化流程
  • 网站扒下来了怎么做关键词搜索工具app