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

手机网站翻页石家庄最新状况

手机网站翻页,石家庄最新状况,企业网站建设方案论文,网页建站点1020.飞地的数量 分析:求不跟边界接壤的陆地的数量 思路一:深度优先遍历 先从四个侧边找陆地,然后进行深度优先遍历,把所有接壤的陆地(1)全部转换成海洋(0) 深度优先遍历&#xf…

1020.飞地的数量

分析:求不跟边界接壤的陆地的数量
思路一:深度优先遍历
  • 先从四个侧边找陆地,然后进行深度优先遍历,把所有接壤的陆地(1)全部转换成海洋(0)
    • 深度优先遍历:从四个方向进行递归遍历
  • 遍历整个图,统计所有陆地的数量。
class Solution {
public:int direct[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int res=0;void dfs(vector<vector<int>>&grid,int x,int y){grid[x][y]=0;for(int i=0;i<4;i++){int nextx=x+direct[i][0];int nexty=y+direct[i][1];if(nextx>=0 && nextx<grid.size() && nexty>=0 && nexty<grid[0].size()){//边界条件if(grid[nextx][nexty]==1){grid[nextx][nexty]=0;dfs(grid,nextx,nexty);}}}}int numEnclaves(vector<vector<int>>& grid) {int n=grid.size(),m=grid[0].size();for(int i=0;i<n;i++){if(grid[i][0]==1) dfs(grid,i,0);//左侧边if(grid[i][m-1]==1) dfs(grid,i,m-1);//右侧边}for(int j=0;j<m;j++){if(grid[0][j]==1) dfs(grid,0,j);//上侧边if(grid[n-1][j]==1) dfs(grid,n-1,j);//下侧边}for(int i=1;i<n-1;i++){//遍历整个图for(int j=1;j<m-1;j++){if(grid[i][j]==1) res++;}}return res;}
};

130.被围绕的区域

思路一:dfs
  • 依然是从四个侧面把陆地深度优先遍历,然后改成 A 字符
  • 然后遍历整个图,把剩余的陆地(必然被海水包裹)变为海水,A 字符变为陆地
class Solution {
public:int direct[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int res=0;void dfs(vector<vector<char>>&board,char target,int x,int y){board[x][y]=target;res++;for(int i=0;i<4;i++){int nextx=x+direct[i][0];int nexty=y+direct[i][1];if(nextx>=0 && nextx<board.size() && nexty>=0 && nexty<board[0].size()){if(board[nextx][nexty]=='O'){board[nextx][nexty]=target;dfs(board,target,nextx,nexty);}}}}void solve(vector<vector<char>>& board) {int n=board.size(),m=board[0].size();for(int i=0;i<n;i++){if(board[i][0]=='O') dfs(board,'A',i,0);//左侧边if(board[i][m-1]=='O') dfs(board,'A',i,m-1);//右侧边}for(int j=0;j<m;j++){if(board[0][j]=='O') dfs(board,'A',0,j);//上侧边if(board[n-1][j]=='O') dfs(board,'A',n-1,j);//下侧边}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(board[i][j]=='A') board[i][j]='O';//所有的A变为Oelse if(board[i][j]=='O') board[i][j]='X';//所有的O变为X}} }
};

417.太平洋大西洋流水问题

思路一:深度优先遍历
  • 分别从大西洋和太平洋一侧,倒着推得到两个数组
  • 当两个数组都经过同一位置时,说明可以流向两边
class Solution {
public:int direct[4][2]={{1,0},{-1,0},{0,1},{0,-1}};void dfs(vector<vector<int>>&heights,vector<vector<bool>>&visted,int x,int y){if(visted[x][y]) return;visted[x][y]=true;for(int i=0;i<4;i++){int nextx=x+direct[i][0];int nexty=y+direct[i][1];if(nextx>=0 && nextx<heights.size() && nexty>=0 && nexty<heights[0].size()){if(heights[x][y]<=heights[nextx][nexty])//本来是从高到低,这是倒着推,所以低到高dfs(heights,visted,nextx,nexty);}}}vector<vector<int>> pacificAtlantic(vector<vector<int>>& heights) {int n=heights.size(),m=heights[0].size();vector<vector<int>>res;vector<vector<bool>>pacific(n,vector<bool>(m,false));//太平洋vector<vector<bool>>atlantic(n,vector<bool>(m,false));//大西洋for(int i=0;i<n;i++){dfs(heights,pacific,i,0);//从左侧太平洋出发dfs(heights,atlantic,i,m-1);//从右侧大西洋出发}for(int j=0;j<m;j++){dfs(heights,pacific,0,j);//从上侧太平洋出发dfs(heights,atlantic,n-1,j);//从下侧大西洋出发}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(pacific[i][j] && atlantic[i][j])//从大西洋和太平洋都可以流过res.push_back({i,j});}}return res;}
};

http://www.15wanjia.com/news/195759.html

相关文章:

  • 淄博网站建设推广乐达wordpress 输出错误信息
  • 做网站最流行的语言手机编程软件中文版免费
  • app网站开发住房公积金有些网站打不开怎么解决
  • 网站建设公司一般用什么建站系统公司做网站最好
  • 深圳网站建设吗百度号码认证平台官网首页
  • 西安知名的集团门户网站建设企业游戏网站风格
  • 广东备案网站昆明怎样优化网站
  • 网站建设应该计入什么费用辽宁省建设执业信息网官网
  • 建设网站前市场分析termux 安装wordpress
  • google英文网站网络维护工作内容及心得体会
  • 泉州电商网站建设做门户网站用什么程序
  • 品牌免费网站建设新闻发稿公司
  • 电子商务网站课程设计总结网络营销案例分析题目
  • 建网站需要哪些条件工信部域名备案查询
  • 网站内部优化工具网站一个多少钱
  • 医疗网站报价方案在线图表生成器
  • h5开网站开发教程阿里云和wordpress
  • 网站备案地点选择域名解析入口
  • 网站建立于网页设计wordpress是pass么
  • 十堰网站优化wordpress 更改模块位置
  • 做网站所需知识免费h5旅游网站模板
  • 网站建设的网络公司南京app开发公司排名
  • 网站腾讯备案三维家是在网站上做还是在app上
  • 宝安建设网站公司网站建设列入无形资产管理吗
  • 深圳网站建设怎样快速微信小程序商城多少钱
  • 公司网站制作哪个公司好太原网站怎么做seo
  • 网站建设拓扑图怎么做类似美团的网站
  • 网站项目推广方案浏览器下载安装大全免费下载
  • 坂田网站的建设dede做手机网站
  • 网站开发 网页设计北京师范大学出版社网站开发与app差距