130. Surrounded Regions
来源:互联网 发布:手机音频软件 编辑:程序博客网 时间:2024/06/04 08:34
1、题目描述
输入一个含有X和O的矩阵,把被X包围的O都变成X,返回转变后的结果。
2、思路
只有四条边上的O才有打开黑暗的钥匙,才能破除四边都被包围的恐怖。
若四条边上有O,则从那个位置开始BFS,把能走到的O都标记成a。
最后把盘面上剩下的O,都变成X;
把a都变成O。
3、代码
void solve(vector<vector<char>>& board) { int n = board.size(); if(n==0) return; int m = board[0].size(); for(int i=0;i<m;i++){ if(board[0][i]=='O') bfs(board,0,i,n,m); } for(int i=0;i<m;i++){ if(board[n-1][i]=='O') bfs(board,n-1,i,n,m); } for(int i=0;i<n;i++){ if(board[i][0]=='O') bfs(board,i,0,n,m); } for(int i=0;i<n;i++){ if(board[i][m-1]=='O') bfs(board,i,m-1,n,m); } for(int i=0;i<n;i++) for(int j=0;j<m;j++){ if(board[i][j]=='O') board[i][j]='X'; } for(int i=0;i<n;i++) for(int j=0;j<m;j++){ if(board[i][j]=='a') board[i][j]='O'; } } void bfs(vector<vector<char>>& board,int x,int y,int n,int m){ queue<pair<int,int> >q; board[x][y]='a'; q.push(make_pair(x,y)); while(!q.empty()){ pair<int,int> t = q.front(); q.pop(); int x1 = t.first; int y1 = t.second; for(int i=0;i<4;i++){ int x2 = x1+xx[i]; int y2 = y1+yy[i]; if(x2>=0&&x2<n&&y2>=0&&y2<m&&board[x2][y2]=='O'){ board[x2][y2]='a'; q.push(make_pair(x2,y2)); } } } } int xx[4]={-1,1,0,0}; int yy[4]={0,0,1,-1};
阅读全文
0 0
- [LeetCode]130.Surrounded Regions
- LeetCode 130. Surrounded Regions
- [leetcode] 130.Surrounded Regions
- 130. Surrounded Regions
- Leetcode 130. Surrounded Regions
- 130. Surrounded Regions
- 130. Surrounded Regions
- leetcode 130. Surrounded Regions
- leetcode 130. Surrounded Regions
- LeetCode 130. Surrounded Regions
- 130. Surrounded Regions
- [LeetCode]130. Surrounded Regions
- LeetCode 130. Surrounded Regions
- 130. Surrounded Regions
- LeetCode *** 130. Surrounded Regions
- 130. Surrounded Regions
- Leetcode 130. Surrounded Regions
- [leetcode] 130. Surrounded Regions
- 产品测试规范(三)
- BZOJ 3563 DZY Loves Chinese(线性基)
- WebService实例-CRM系统提供WebService实现用户注册功能
- MySQL表的约束及外键的添加
- JSTL格式化标签与函数
- 130. Surrounded Regions
- 依依东望
- ActionScript Object 2 Java Object
- bazel使用问题汇总
- 简单的图片上传功能
- C++ 知识点链接转载(持续更新)
- java资料全套\基础+就业\Spring框架2016版视频\day02视频\07-aop原理(二).xml
- 前端HTML基础知识(1)
- 使用花生壳将项目映射到公网