Leetcode 419 Battleships in a Board
来源:互联网 发布:bmob后端云 java 编辑:程序博客网 时间:2024/05/29 14:30
解题思路:
题目大意是战舰只能一行或者一列这样的排列,并且战舰必须隔开,不能有相交.
所以只要遍历是'X'的点,并且'X'的上方和左侧不能是'X',这样就是一个战舰.
class Solution {public: bool is_X(int i,int j,vector<vector<char> >& board){ if (board[i][j] != 'X') return false; else{ if (i==0 && j==0) return true; if (i==0 && j>0 && board[i][j-1] != 'X') return true; if (i>0 && j==0 && board[i-1][j] != 'X') return true; if (i > 0 && j > 0 && board[i-1][j] != 'X' && board[i][j-1] != 'X') return true; else return false; } } int countBattleships(vector<vector<char> >& board) { int res = 0; int m = board.size(); int n = board[0].size(); for (int i = 0; i < m; i++) for(int j = 0; j < n; j++){ if (is_X(i,j,board) == true) res++; } return res; }};也可以使用dfs,
class Solution {public: int m, n; vector<vector<bool>> flag; int move[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; void dfs(vector<vector<char>>& board, int i, int j) { if (i < 0 || i >= m || j < 0 || j >= n || board[i][j] == '.' || flag[i][j]) return; flag[i][j] = true; for (int d = 0; d < 4; ++d) dfs(board, i+move[d][0], j+move[d][1]); } int countBattleships(vector<vector<char>>& board) { if (board.empty()) return 0; m = board.size(), n = board[0].size(); flag.resize(m, vector<bool>(n, false)); int result = 0; for (int i = 0; i < m; ++i) for (int j = 0; j < n; ++j) if (board[i][j] == 'X' && !flag[i][j]) { ++result; dfs(board, i, j); } return result; }};
0 0
- LeetCode[419] Battleships in a Board
- LeetCode #419: Battleships in a Board
- leetcode 419 Battleships in a Board C++
- Leetcode 419 Battleships in a Board
- Leetcode 419 Battleships in a Board
- [LeetCode] 419-Battleships in a Board
- Leetcode 419 Battleships in a Board
- Leetcode Battleships in a Board
- Battleships in a Board [Leetcode]
- LeetCode-Battleships in a Board
- LeetCode 419 Battleships in a Board (DFS 或 模拟)
- 【leetcode】419. Battleships in a Board【E】
- Leetcode题解:419. Battleships in a Board
- leetcode oj java Battleships in a Board
- 419. [LeetCode]Battleships in a Board
- LeetCode 419. Battleships in a Board
- leetcode 419. Battleships in a Board
- LeetCode笔记:419. Battleships in a Board
- [翻译] We have a problem with promises
- CSS总结4
- javascript总结1
- javascript总结2
- 计算器 案例
- Leetcode 419 Battleships in a Board
- javascript总结3
- 第二大整数
- 经典案例: 购物车
- kmp算法解析
- 如何启动、关闭和设置ubuntu防火墙
- spring mvc 处理方法的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void
- @Controller(2) 详解@RequestMapping
- @Controller(1)基于@注释的控制器配置