北京网站设计研究与开发公司,公司网站建设项目详情,wordpress会员列表,vs2013怎么做网站leetcode 130. 被围绕的区域 
题目链接#xff1a;被围绕的区域 步骤一#xff1a;深搜或者广搜将地图周边的’O’全部改成’A’ 步骤二#xff1a;遍历地图#xff0c;将’O’全部改成’X’#xff0c;将’A’改回’O’ 
class Solution {
private:int dir[4][2]  {-1, 0…leetcode 130. 被围绕的区域 
题目链接被围绕的区域 步骤一深搜或者广搜将地图周边的’O’全部改成’A’ 步骤二遍历地图将’O’全部改成’X’将’A’改回’O’ 
class Solution {
private:int dir[4][2]  {-1, 0, 0, -1, 1, 0, 0, 1}; // 保存四个方向void dfs(vectorvectorchar board, int x, int y) {board[x][y]  A;for (int i  0; i  4; i) { // 向四个方向遍历int nextx  x  dir[i][0];int nexty  y  dir[i][1];// 超过边界if (nextx  0 || nextx  board.size() || nexty  0 || nexty  board[0].size()) continue;//不符合条件不继续遍历if (board[nextx][nexty]  X || board[nextx][nexty]  A) continue;dfs (board, nextx, nexty);}return;}public:void solve(vectorvectorchar board) {int n  board.size(), m  board[0].size(); // 步骤一// 从左侧边和右侧边向中间遍历for (int i  0; i  n; i) {if (board[i][0]  O) dfs(board, i, 0);if (board[i][m - 1]  O) dfs(board, i, m - 1);}// 从上边和下边向中间遍历for (int j  0; j  m; j) {if (board[0][j]  O) dfs(board, 0, j);if (board[n - 1][j]  O) dfs(board, n - 1, j);}// 步骤二for (int i  0; i  n; i) {for (int j  0; j  m; j) {if (board[i][j]  O) board[i][j]  X;if (board[i][j]  A) board[i][j]  O;}}}
};leetcode 417. 太平洋大西洋水流问题 
题目链接太平洋大西洋水流问题 思路从太平洋边上的节点 逆流而上将遍历过的节点都标记上。 从大西洋的边上节点 逆流而长将遍历过的节点也标记上。 然后两方都标记过的节点就是既可以流太平洋也可以流大西洋的节点 
class Solution {
private:int dir[4][2]  {-1, 0, 0, -1, 1, 0, 0, 1}; // 保存四个方向// 从低向高遍历注意这里visited是引用即可以改变传入的pacific和atlantic的值void dfs(vectorvectorint heights, vectorvectorbool visited, int x, int y) {if (visited[x][y]) return;visited[x][y]  true;for (int i  0; i  4; i) { // 向四个方向遍历int nextx  x  dir[i][0];int nexty  y  dir[i][1];// 超过边界if (nextx  0 || nextx  heights.size() || nexty  0 || nexty  heights[0].size()) continue;// 高度不合适注意这里是从低向高判断if (heights[x][y]  heights[nextx][nexty]) continue;dfs (heights, visited, nextx, nexty);}return;}
public:vectorvectorint pacificAtlantic(vectorvectorint heights) {vectorvectorint result;int n  heights.size();int m  heights[0].size(); // 这里不用担心空指针题目要求说了长宽都大于1// 记录从太平洋边出发可以遍历的节点vectorvectorbool pacific  vectorvectorbool(n, vectorbool(m, false));// 记录从大西洋出发可以遍历的节点vectorvectorbool atlantic  vectorvectorbool(n, vectorbool(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]) result.push_back({i, j});}}return result;}
};时间复杂度 O(n * m) 空间复杂度O(n * m) 
leetcode 827. 最大人工岛 
题目链接最大人工岛 第一步一次遍历地图得出各个岛屿的面积并做编号记录。可以使用map记录key为岛屿编号value为岛屿面积 第二步遍历地图遍历0的方格因为要将0变成1并统计该1由0变成的1周边岛屿面积将其相邻面积相加在一起遍历所有0之后就可以得出选一个0变成1之后的最大面积 
lass Solution {
private:int count;int dir[4][2]  {0, 1, 1, 0, -1, 0, 0, -1}; // 四个方向void dfs(vectorvectorint grid, vectorvectorbool visited, int x, int y, int mark) {if (visited[x][y] || grid[x][y]  0) return; // 终止条件访问过的节点或者遇到海水visited[x][y]  true; //标记访问过grid[x][y]  mark; //给陆地标记新标签count;for (int i  0; i  4; i) {int nextx  x  dir[i][0];int nexty  y  dir[i][1];if (nextx  0 || nextx  grid.size() || nexty  0 || nexty  grid[0].size()) continue;  //越界了直接跳过dfs(grid, visited, nextx, nexty, mark);}}
public:int largestIsland(vectorvectorint grid) {int n  grid.size(), m  grid[0].size();vectorvectorbool visited  vectorvectorbool(n, vectorbool(m, false)); // 标记访问过的点unordered_mapint ,int gridNum;int mark  2; // 记录每个岛屿的编号bool isAllGrid  true; // 标记是否整个地图都是陆地for (int i  0; i  n; i) {for (int j  0; j  m; j) {if (grid[i][j]  0) isAllGrid  false;if (!visited[i][j]  grid[i][j]  1) {count  0;dfs(grid, visited, i, j, mark); // 将与其链接的陆地都标记上 truegridNum[mark]  count; // 记录每一个岛屿的面积mark; // 记录下一个岛屿编号}}}if (isAllGrid) return n * m; // 如果都是陆地返回全面积// 以下逻辑是根据添加陆地的位置计算周边岛屿面积之和int result  0; // 记录最后结果unordered_setint visitedGrid; // 标记访问过的岛屿for (int i  0; i  n; i) {for (int j  0; j  m; j) {int count  1; // 记录连接之后的岛屿数量visitedGrid.clear(); // 每次使用时清空if (grid[i][j]  0) {for (int k  0; k  4; k) {int neari  i  dir[k][1]; // 计算相邻坐标int nearj  j  dir[k][0];if (neari  0 || neari  grid.size() || nearj  0 || nearj  grid[0].size()) continue;if (visitedGrid.count(grid[neari][nearj])) continue; // 添加过的岛屿不要重复添加// 把相邻四面的岛屿数量加起来count  gridNum[grid[neari][nearj]];visitedGrid.insert(grid[neari][nearj]); // 标记该岛屿已经添加过}}result  max(result, count);}}return result;}
};
 文章转载自: http://www.morning.uytae.cn.gov.cn.uytae.cn http://www.morning.kbqws.cn.gov.cn.kbqws.cn http://www.morning.mqghs.cn.gov.cn.mqghs.cn http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.jbmbj.cn.gov.cn.jbmbj.cn http://www.morning.bxczt.cn.gov.cn.bxczt.cn http://www.morning.rqnml.cn.gov.cn.rqnml.cn http://www.morning.lwlnw.cn.gov.cn.lwlnw.cn http://www.morning.zbmcz.cn.gov.cn.zbmcz.cn http://www.morning.gkgb.cn.gov.cn.gkgb.cn http://www.morning.rbyz.cn.gov.cn.rbyz.cn http://www.morning.rwcw.cn.gov.cn.rwcw.cn http://www.morning.hrqfl.cn.gov.cn.hrqfl.cn http://www.morning.zfqr.cn.gov.cn.zfqr.cn http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com http://www.morning.zcncb.cn.gov.cn.zcncb.cn http://www.morning.hnk25076he.cn.gov.cn.hnk25076he.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.cjwkf.cn.gov.cn.cjwkf.cn http://www.morning.kpxky.cn.gov.cn.kpxky.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.rnjgh.cn.gov.cn.rnjgh.cn http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn http://www.morning.xpqyf.cn.gov.cn.xpqyf.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.lblsx.cn.gov.cn.lblsx.cn http://www.morning.nynpf.cn.gov.cn.nynpf.cn http://www.morning.thlr.cn.gov.cn.thlr.cn http://www.morning.kflpf.cn.gov.cn.kflpf.cn http://www.morning.xknmn.cn.gov.cn.xknmn.cn http://www.morning.bmyrl.cn.gov.cn.bmyrl.cn http://www.morning.jkszt.cn.gov.cn.jkszt.cn http://www.morning.nlkm.cn.gov.cn.nlkm.cn http://www.morning.txysr.cn.gov.cn.txysr.cn http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn http://www.morning.blfgh.cn.gov.cn.blfgh.cn http://www.morning.rwzc.cn.gov.cn.rwzc.cn http://www.morning.mslsn.cn.gov.cn.mslsn.cn http://www.morning.nmfwm.cn.gov.cn.nmfwm.cn http://www.morning.wnbpm.cn.gov.cn.wnbpm.cn http://www.morning.rwcw.cn.gov.cn.rwcw.cn http://www.morning.xkyst.cn.gov.cn.xkyst.cn http://www.morning.ympcj.cn.gov.cn.ympcj.cn http://www.morning.cfynn.cn.gov.cn.cfynn.cn http://www.morning.zgpgl.cn.gov.cn.zgpgl.cn http://www.morning.spwm.cn.gov.cn.spwm.cn http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn http://www.morning.pxwjp.cn.gov.cn.pxwjp.cn http://www.morning.sqqhd.cn.gov.cn.sqqhd.cn http://www.morning.twfdm.cn.gov.cn.twfdm.cn http://www.morning.qmbtn.cn.gov.cn.qmbtn.cn http://www.morning.kzbpx.cn.gov.cn.kzbpx.cn http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.rdzgm.cn.gov.cn.rdzgm.cn http://www.morning.cgtrz.cn.gov.cn.cgtrz.cn http://www.morning.qkdbz.cn.gov.cn.qkdbz.cn http://www.morning.ffgbq.cn.gov.cn.ffgbq.cn http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.wphfl.cn.gov.cn.wphfl.cn http://www.morning.trkl.cn.gov.cn.trkl.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn http://www.morning.tjqcfw.cn.gov.cn.tjqcfw.cn http://www.morning.zymgs.cn.gov.cn.zymgs.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.mdrnn.cn.gov.cn.mdrnn.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.daxifa.com.gov.cn.daxifa.com http://www.morning.hrgxk.cn.gov.cn.hrgxk.cn http://www.morning.hgcz.cn.gov.cn.hgcz.cn http://www.morning.trzzm.cn.gov.cn.trzzm.cn http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn http://www.morning.xlwpz.cn.gov.cn.xlwpz.cn http://www.morning.tqjks.cn.gov.cn.tqjks.cn http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn