leetcode 130 —— Sum Root to Leaf Numbers
来源:互联网 发布:锐捷mac客户端最新 编辑:程序博客网 时间:2024/06/01 10:32
Given a 2D board containing 'X'
and 'O'
, capture all regions surrounded by 'X'
.
A region is captured by flipping all 'O'
s into 'X'
s in that surrounded region.
For example,
X X X XX O O XX X O XX O X X
After running your function, the board should be:
X X X XX X X XX X X XX O X X
思路1: 暴力法,343ms,差一点超时
class Solution {public:void solve(vector<vector<char>>& board) {bool flag = true;int m = board.size();if (m == 0) return;int n = board[0].size();for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (board[i][j] == 'X')continue;if (board[i][j] == 'O'){if (check(board, i, j)){board[i][j] = 'Y';}//else{//recover(board, i, j);//}}}}while (flag){flag = false;for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (board[i][j] == 'O'){recover(board, i, j,flag);}}}}for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (board[i][j] == 'Y')board[i][j] = 'X';}}}bool check(vector<vector<char>>& board, int i, int j){bool left, right, up, down;left = right = up = down = false;for (int m = i - 1; m >= 0; m--){if (board[m][j] == 'X'){left = true;break;}}for (int m = i + 1; m < board.size(); m++){if (board[m][j] == 'X'){right = true;break;}}for (int m = j - 1; m >= 0; m--){if (board[i][m] == 'X'){up = true;break;}}for (int m = j + 1; m < board[0].size(); m++){if (board[i][m] == 'X'){down = true;break;}}return left&&right&&up&&down;}//把Y变成Ovoid recover(vector<vector<char>>& board, int i, int j,bool& flag){ for (int m = i - 1; m >= 0; m--){if (board[m][j] == 'Y'){board[m][j] = 'O';flag = true;}if (board[m][j] == 'X')break;}for (int m = i + 1; m < board.size(); m++){if (board[m][j] == 'Y'){board[m][j] = 'O';flag = true;}if (board[m][j] == 'X')break;}for (int m = j - 1; m >= 0; m--){if (board[i][m] == 'Y'){board[i][m] = 'O';flag = true;}if (board[i][m] == 'X')break;}for (int m = j + 1; m < board[0].size(); m++){if (board[i][m] == 'Y'){flag = true;board[i][m] = 'O';}if (board[i][m] == 'X')break;}} //把Y变成O};
0 0
- LeetCode—Sum Root to Leaf Numbers
- leetcode 130 —— Sum Root to Leaf Numbers
- LeetCode——Sum Root to Leaf Numbers
- LeetCode——Sum Root to Leaf Numbers
- leetcode 129 —— Sum Root to Leaf Numbers
- LeetCode题解——Sum Root to Leaf Numbers
- LeetCode129—Sum Root to Leaf Numbers
- leetcode 86: Sum Root to Leaf Numbers
- [LeetCode] Sum root to leaf numbers
- LeetCode : Sum Root to Leaf Numbers
- [leetcode] Sum Root to Leaf Numbers
- 【leetcode】Sum Root to Leaf Numbers
- LeetCode之sum root to leaf numbers
- leetcode:Sum Root to Leaf Numbers
- [LeetCode]Sum Root to Leaf Numbers
- [Leetcode]Sum Root to Leaf Numbers
- [leetcode]Sum Root to Leaf Numbers
- leetcode Sum Root to Leaf Numbers
- Java中string 创建对象时 “”和null的区别
- VB.NET通过PID(ProcessID)获得某进程的CPU使用率
- 逻辑层对策略模式的使用
- AC自动机步骤详解
- Windows上安装配置RabbitMQ快速指南
- leetcode 130 —— Sum Root to Leaf Numbers
- 求解立方根(不使用库函数)
- hdu3694(四边形的费马点)
- Android获取手机方向
- JavaScript常用字符串处理方法
- Liferay数据库连接回收站出错
- C语言printf()函数详解和安全隐患
- EditText实现显示和隐藏密码
- 给android添加系统属性:Settings.system和SystemProperties