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

做网站导航站的注意点wordpress数据库显示

做网站导航站的注意点,wordpress数据库显示,开发板的作用,修改wordpress登录Every day a Leetcode 题目来源#xff1a;200. 岛屿数量 解法1#xff1a;深度优先搜索 设目前指针指向一个岛屿中的某一点 (i, j)#xff0c;寻找包括此点的岛屿边界。 从 (i, j) 向此点的上下左右 (i1,j)#xff0c;(i-1,j)#xff0c;(i,j1)#xff0c;(i,j-1) …Every day a Leetcode 题目来源200. 岛屿数量 解法1深度优先搜索 设目前指针指向一个岛屿中的某一点 (i, j)寻找包括此点的岛屿边界。 从 (i, j) 向此点的上下左右 (i1,j)(i-1,j)(i,j1)(i,j-1) 做深度搜索。 终止条件 (i, j) 越过矩阵边界grid[i][j] 0代表此分支已越过岛屿边界。 搜索岛屿的同时执行 grid[i][j] ‘0’即将岛屿所有节点删除以免之后重复搜索相同岛屿。 遍历整个矩阵当遇到 grid[i][j] ‘1’ 时从此点开始做深度优先搜索 dfs岛屿数 count 1 且在深度优先搜索中删除此岛屿。 最终返回岛屿数 count 即可。 代码 /** lc appleetcode.cn id200 langcpp** [200] 岛屿数量*/// lc codestart// 深度优先搜索class Solution { private:const int dx[4] {-1, 0, 1, 0};const int dy[4] {0, 1, 0, -1};public:int numIslands(vectorvectorchar grid){if (grid.empty())return 0;int m grid.size(), n m ? grid[0].size() : 0;int islands 0;for (int i 0; i m; i)for (int j 0; j n; j)if (grid[i][j] 1){islands;dfs(grid, i, j);}return islands;}// 辅函数 - 深度优先搜索void dfs(vectorvectorchar grid, int r, int c){if (r 0 || r grid.size() || c 0 || c grid[0].size() || grid[r][c] 0)return;grid[r][c] 0;for (int i 0; i 4; i){int x dx[i], y dy[i];dfs(grid, r x, c y);}} }; // lc codeend结果 复杂度分析 时间复杂度O(m*n)其中 m 和 n 分别是二维数组 grid 的行数和列数。 空间复杂度O(m*n)其中 m 和 n 分别是二维数组 grid 的行数和列数。在最坏情况下整个网格均为陆地深度优先搜索的深度达到 m*n。 解法2广度优先搜索 同样地我们也可以使用广度优先搜索代替深度优先搜索。 为了求出岛屿的数量我们可以扫描整个二维网格。如果一个位置为 1则将其加入队列开始进行广度优先搜索。在广度优先搜索的过程中每个搜索到的 1 都会被重新标记为 0。直到队列为空搜索结束。 最终岛屿的数量就是我们进行广度优先搜索的次数。 代码 class Solution { public:int numIslands(vectorvectorchar grid){if (grid.empty())return 0;int m grid.size(), n m ? grid[0].size() : 0;int islands 0;for (int r 0; r m; r)for (int c 0; c n; c)if (grid[r][c] 1){islands;grid[r][c] 0;queuepairint, int neighbors;neighbors.push({r, c});while (!neighbors.empty()){auto rc neighbors.front();neighbors.pop();int row rc.first, col rc.second;if (row - 1 0 grid[row - 1][col] 1){neighbors.push({row - 1, col});grid[row - 1][col] 0;}if (row 1 m grid[row 1][col] 1){neighbors.push({row 1, col});grid[row 1][col] 0;}if (col - 1 0 grid[row][col - 1] 1){neighbors.push({row, col - 1});grid[row][col - 1] 0;}if (col 1 n grid[row][col 1] 1){neighbors.push({row, col 1});grid[row][col 1] 0;}}}return islands;} };结果 复杂度分析 时间复杂度O(m*n)其中 m 和 n 分别是二维数组 grid 的行数和列数。 空间复杂度O(min⁡(m, n))其中 m 和 n 分别是二维数组 grid 的行数和列数。在最坏情况下整个网格均为陆地队列的大小可以达到 min⁡(m, n)。 解法3并查集 同样地我们也可以使用并查集代替搜索。 为了求出岛屿的数量我们可以扫描整个二维网格。如果一个位置为 1则将其与相邻四个方向上的 1 在并查集中进行合并。 最终岛屿的数量就是并查集中连通分量的数目。 代码 class UnionFind { public:UnionFind(vectorvectorchar grid) {count 0;int m grid.size();int n grid[0].size();for (int i 0; i m; i) {for (int j 0; j n; j) {if (grid[i][j] 1) {parent.push_back(i * n j);count;}else {parent.push_back(-1);}rank.push_back(0);}}}int find(int i) {if (parent[i] ! i) {parent[i] find(parent[i]);}return parent[i];}void unite(int x, int y) {int rootx find(x);int rooty find(y);if (rootx ! rooty) {if (rank[rootx] rank[rooty]) {swap(rootx, rooty);}parent[rooty] rootx;if (rank[rootx] rank[rooty]) rank[rootx] 1;--count;}}int getCount() const {return count;}private:vectorint parent;vectorint rank;int count; };class Solution { public:int numIslands(vectorvectorchar grid) {int nr grid.size();if (!nr) return 0;int nc grid[0].size();UnionFind uf(grid);int num_islands 0;for (int r 0; r nr; r) {for (int c 0; c nc; c) {if (grid[r][c] 1) {grid[r][c] 0;if (r - 1 0 grid[r-1][c] 1) uf.unite(r * nc c, (r-1) * nc c);if (r 1 nr grid[r1][c] 1) uf.unite(r * nc c, (r1) * nc c);if (c - 1 0 grid[r][c-1] 1) uf.unite(r * nc c, r * nc c - 1);if (c 1 nc grid[r][c1] 1) uf.unite(r * nc c, r * nc c 1);}}}return uf.getCount();} };复杂度分析
http://www.sadfv.cn/news/115136/

相关文章:

  • 平凉市建设厅官方网站怎样做淘宝联盟网站
  • 网址收录网站自己做网站帮别人卖东西
  • 做网站建设的电销增加wordpress页脚小工具
  • 做360网站优化最新软件开发国家标准
  • dedecms网站关键词安康市网站建设
  • 摄影网站设计说明招聘去建设网站类网站
  • 如何看出网站用dede做的vi设计的作用及意义
  • 文山网站开发产品如何做网站推广
  • 品牌网站建设e小蝌蚪汽车行业网站建设比较好
  • 网站机房建设流程组建一个网站开发团队需要多少钱
  • 企业案例网站国内顶尖工业设计公司
  • 读书网网站建设策划书微商城网站开发制作
  • 网站发号源码2016莱芜哪里做网站
  • 贵阳市网站优化如何做视频网站旗下账号
  • 网站开发人员招聘广告语网站开发重点难点分析
  • 做网站有骗子公司网站建设收费
  • 小型企业网站建设报告模拟组建过程阿里巴巴1688怎么做网站
  • 网站规划课程设计模板深圳网站运营外包公司
  • 网站建设的基本教程点击图片直接进入网站怎么做
  • 网站弹窗页面是谁做的网页传奇打金
  • goood设计网站wordpress添加分享按钮
  • 无锡企业建设网站公司男人做爽的免费网站
  • 定制建站公司网站的软件
  • 企业网站建设的类型有哪些网站有多少个
  • 专门做库存处理的网站中企动力做的 石子厂网站
  • 什么网站能让小孩做算术题网站建设网页模板
  • 内蒙古自治区建设厅官方网站建站seo课程
  • 做班级网站的详细计划书在互联网上建设网站可选择的方案有
  • 档案信息网站建设遵循什么原则企业信用等级查询系统
  • 建立企业网站需要什么天河网站建设公司排名