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

青岛市北建设集团网站建程网官网平台

青岛市北建设集团网站,建程网官网平台,四川网站建设电话,软件开发流程八个步骤417m. 太平洋大西洋水流问题 题目链接 代码随想录文章讲解链接 方法一#xff1a; 用时#xff1a;1h0m58s 思路 直接找哪些点既可以到达太平洋又可以到达大西洋比较麻烦#xff0c;换个角度#xff0c;找到太平洋可以逆流而上到达的点#xff0c;再找到大西洋可以逆…417m. 太平洋大西洋水流问题 题目链接 代码随想录文章讲解链接 方法一 用时1h0m58s 思路 直接找哪些点既可以到达太平洋又可以到达大西洋比较麻烦换个角度找到太平洋可以逆流而上到达的点再找到大西洋可以逆流而上到达的点两者的交集就是所需要的答案。 用两个二维数组分别记录太平洋和大西洋可以逆流而上达到的点对边界的点使用DFS。 时间复杂度 O ( m ⋅ n ) O(m \cdot n) O(m⋅n)。空间复杂度 O ( m ⋅ n ) O(m \cdot n) O(m⋅n)。 C代码 class Solution { private:int m;int n;void dfs(vectorvectorint heights, vectorvectorbool visited, int x, int y) {visited[x][y] true;if (x - 1 0 !visited[x - 1][y] heights[x - 1][y] heights[x][y]) dfs(heights, visited, x - 1, y);if (x 1 m !visited[x 1][y] heights[x 1][y] heights[x][y]) dfs(heights, visited, x 1, y);if (y - 1 0 !visited[x][y - 1] heights[x][y - 1] heights[x][y]) dfs(heights, visited, x, y - 1);if (y 1 n !visited[x][y 1] heights[x][y 1] heights[x][y]) dfs(heights, visited, x, y 1);}public:vectorvectorint pacificAtlantic(vectorvectorint heights) {m heights.size();n heights[0].size();vectorvectorbool pacific(m, vectorbool(n, false));vectorvectorbool atlantic(m, vectorbool(n, false));vectorvectorint res;for (int i 0; i m; i) {if (!pacific[i][0]) dfs(heights, pacific, i, 0);if (!atlantic[i][n - 1]) dfs(heights, atlantic, i, n - 1);}for (int i 0; i n; i) {if (!pacific[0][i]) dfs(heights, pacific, 0, i);if (!atlantic[m - 1][i]) dfs(heights, atlantic, m - 1, i);}for (int i 0; i m; i) {for (int j 0; j n; j) {if (pacific[i][j] atlantic[i][j]) res.push_back({i, j});}}return res;} };方法二BFS 用时6m53s 思路 时间复杂度 O ( m n ) O(mn) O(mn)。空间复杂度 O ( m n ) O(mn) O(mn)。 C代码 class Solution { private:int m;int n;int dir[4][2] {0, 1, 0, -1, 1, 0, -1, 0};void bfs(vectorvectorint heights, vectorvectorbool visited, int x, int y) {queuepairint, int que;que.push(pairint, int(x, y));visited[x][y] true;while (!que.empty()) {pairint, int tmp que.front();que.pop();for (int i 0; i 4; i) {int nextx tmp.first dir[i][0];int nexty tmp.second dir[i][1];if (!(nextx 0 || nextx m || nexty 0 || nexty n) !visited[nextx][nexty] heights[nextx][nexty] heights[tmp.first][tmp.second]) {visited[nextx][nexty] true;que.push(pairint, int(nextx, nexty));}}}}public:vectorvectorint pacificAtlantic(vectorvectorint heights) {m heights.size();n heights[0].size();vectorvectorbool pacific(m, vectorbool(n, false));vectorvectorbool atlantic(m, vectorbool(n, false));vectorvectorint res;for (int i 0; i m; i) {if (!pacific[i][0]) bfs(heights, pacific, i, 0);if (!atlantic[i][n - 1]) bfs(heights, atlantic, i, n - 1);}for (int i 0; i n; i) {if (!pacific[0][i]) bfs(heights, pacific, 0, i);if (!atlantic[m - 1][i]) bfs(heights, atlantic, m - 1, i);}for (int i 0; i m; i) {for (int j 0; j n; j) {if (pacific[i][j] atlantic[i][j]) res.push_back({i, j});}}return res;} };看完讲解的思考 逆流而上真妙啊。 代码实现遇到的问题 无。 841m. 钥匙和房间 题目链接 代码随想录文章讲解链接 方法一DFS 用时12m21s 思路 DFS一遍若有房间没走过则返回false。 时间复杂度 O ( n ) O(n) O(n)。空间复杂度 O ( n ) O(n) O(n)。 C代码 class Solution { private:void dfs(vectorvectorint rooms, vectorbool visited, int i) {visited[i] true;for (int j 0; j rooms[i].size(); j) {if (!visited[rooms[i][j]]) dfs(rooms, visited, rooms[i][j]);}}public:bool canVisitAllRooms(vectorvectorint rooms) {vectorbool visited(rooms.size(), false);dfs(rooms, visited, 0);for (int i 0; i rooms.size(); i) {if (!visited[i]) return false;}return true;} };方法二BFS 用时4m46s 思路 时间复杂度 O ( n ) O(n) O(n)。空间复杂度 O ( n ) O(n) O(n)。 C代码 class Solution { public:bool canVisitAllRooms(vectorvectorint rooms) {vectorbool visited(rooms.size(), false);queueint que;visited[0] true;que.push(0);while (!que.empty()) {int curRoom que.front();que.pop();for (int i 0; i rooms[curRoom].size(); i) {if (!visited[rooms[curRoom][i]]) {visited[rooms[curRoom][i]] true;que.push(rooms[curRoom][i]);}}}for (int i 1; i rooms.size(); i) {if (!visited[i]) return false;}return true;} };看完讲解的思考 无。 代码实现遇到的问题 无。 463e. 岛屿的周长 题目链接 代码随想录文章讲解链接 方法一DFS 用时7m37s 思路 在DFS的过程中某个方向到达边界或者到达水域则说明该方向是一条边周长1。 时间复杂度 O ( m n ) O(mn) O(mn)。空间复杂度 O ( m n ) O(mn) O(mn)。 C代码 class Solution { private:int m;int n;int perimeter;void dfs(vectorvectorint grid, int x, int y) {grid[x][y] 2;if (x - 1 0 || grid[x - 1][y] 0) perimeter;else if (grid[x - 1][y] ! 2) dfs(grid, x - 1, y);if (x 1 m || grid[x 1][y] 0) perimeter;else if (grid[x 1][y] ! 2) dfs(grid, x 1, y);if (y - 1 0 || grid[x][y - 1] 0) perimeter;else if (grid[x][y - 1] ! 2) dfs(grid, x, y - 1);if (y 1 n || grid[x][y 1] 0) perimeter;else if (grid[x][y 1] ! 2) dfs(grid, x, y 1);}public:int islandPerimeter(vectorvectorint grid) {m grid.size();n grid[0].size();for (int i 0; i m; i) {for (int j 0; j n; j) {if (grid[i][j] 1) {dfs(grid, i, j);return perimeter;}}}return perimeter;} };方法二BFS 用时4m55s 思路 时间复杂度 O ( m n ) O(mn) O(mn)。空间复杂度 O ( m n ) O(mn) O(mn)。 C代码 class Solution { private:int m;int n;int perimeter;int dir[4][2] {0, 1, 0, -1, 1, 0, -1, 0};void bfs(vectorvectorint grid, int x, int y) {queuepairint, int que;grid[x][y] 2;que.push(pairint, int(x, y));while (!que.empty()) {pairint, int tmp que.front();que.pop();for (int i 0; i 4; i) {int nextx tmp.first dir[i][0];int nexty tmp.second dir[i][1];if (nextx 0 || nextx m || nexty 0 || nexty n || grid[nextx][nexty] 0) perimeter;else if (grid[nextx][nexty] ! 2) {grid[nextx][nexty] 2;que.push(pairint, int(nextx, nexty));}}}}public:int islandPerimeter(vectorvectorint grid) {m grid.size();n grid[0].size();for (int i 0; i m; i) {for (int j 0; j n; j) {if (grid[i][j] 1) {bfs(grid, i, j);return perimeter;}}}return perimeter;} };方法三遍历 用时7m11s 思路 其实直接遍历就行了遇到陆地就判断一下四条边根本不用dfs、bfs这么复杂… 时间复杂度 O ( m n ) O(mn) O(mn)。空间复杂度 O ( 1 ) O(1) O(1)。 C代码 class Solution { public:int islandPerimeter(vectorvectorint grid) {int m grid.size();int n grid[0].size();int perimeter 0;for (int i 0; i m; i) {for (int j 0; j n; j) {if (grid[i][j] 1) {if (i - 1 0 || grid[i - 1][j] 0) perimeter;if (i 1 m || grid[i 1][j] 0) perimeter;if (j - 1 0 || grid[i][j - 1] 0) perimeter;if (j 1 n || grid[i][j 1] 0) perimeter;}}}return perimeter;} };看完讲解的思考 无。 代码实现遇到的问题 无。 最后的碎碎念 一刷倒数第二天
http://www.pierceye.com/news/989007/

相关文章:

  • 阿里云服务器网站开发正规品牌网站设计品牌
  • 网站突然搜不到了我是做装修什么网站可以
  • 外国网站在内地做seo食品网站模板
  • 网站推广名片wordpress 数据库查询数据库
  • 自己搭建的ftp怎么做网站线上推广员
  • 网站开发设计大赛北京seo招聘信息
  • 营销型网站是什么云南网站设计流程
  • 怎么做网站效果图广西网站建设运营费用
  • 怎么自己开发app软件无锡网站推广优化公司哪家好
  • 做网站原型的简单工具深圳网站建设美橙互联
  • 免费关键词挖掘网站wordpress发多少文章卡
  • html网站建设的步骤wordpress 自定义变量
  • 网站建设的意见建站公司有哪些服务
  • 广东美景园林建设有限公司网站陕西网络公司网站建设
  • 网站关键词怎么填写南昌网站建设一般多少钱一年
  • 公司网站制作费用无区域公司注册要求
  • 网站文章更新时间去国外做外卖网站好
  • 北京网站制作设计wordpress seo 介绍
  • 手机网站搭建平台怎么查网站域名备案
  • 用文件传输协议登录网站网站开发设计手册
  • 有什么兼职做it的网站网络推广怎么做才有效
  • 网站后台开发教程沈阳网站制作流程
  • 可以自己做课程的网站深圳小型网站建设
  • 静安做网站公司网站上线的通知
  • 怎么建设电影网站wordpress 附件上传插件下载
  • 网站导航内链建设企业网站设计方式有哪些
  • 手表网站建站千秋网络是家西安做网站的公司
  • 济南企业网站百度seo优化是做什么的
  • 网站颜色搭配案例wordpress洛米主题
  • 网站几个关键词网站备案为什么要关闭