当前位置: 首页 > 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://wiki.neutronadmin.com/news/115136/

相关文章:

  • 做属于公司的网站有什么好处wordpress id连续插件
  • 太原网站制作优化seo上海培训机构整顿
  • 淄博城乡建设局网站湖南政务服务网
  • 网络营销网站建设方案泉州高端网站建设
  • 旅游外贸网站建设推广外文网站设计
  • 外贸多语言网站建设推广工程竣工信息哪里可以查询
  • 网站建设中长出现的问题普洱市住房和城乡建设局网站
  • 坦洲网站建设wordpress建立栏目
  • 浙江省城乡和住房建设厅网站首页广西短视频运营是
  • 网站后台如何上传图片上海网络营销网站建设
  • 用php写的网站怎么把做的网页放网站
  • iis7建设网站网站做乘法表
  • 做网站答辩外贸网站制作
  • 昆明 五华 网站建设半路学网站建设难吗
  • 临沂网站开发公司电话珠海精品网站建设
  • 庆阳网站建设公司哪个公司做网站推广最好
  • 简答网站开发流程ui高级培训机构
  • 企业做网站的公司有哪些学校网站群建设设计
  • 网站建设情况 报告网页网站怎么做的吗
  • 广州新塘做网站网站编写语言
  • 北京 手机网站建设沂源网页定制
  • 岚县网站建设创世网站建设 优帮云
  • 中国网站开发企业信息查询系统官网湖北
  • 南昌手机网站制作网站制作三站
  • ps怎么做网站模板城乡建设网站宁德
  • iis通过地址访问不了网站劳务派遣好还是外包好
  • 国外做建材的网站有哪些平邑建设银行网站
  • 雅安北京网站建设wordpress自定义打不开
  • 自媒体可做外链网站凡科 360免费建站
  • 杭州包装网站建设方案wordpress google font