LEETCODE 36. Valid Sudoku
2017-05-23 21:55
351 查看
题目大意
给出一个9*9的二维表格:判断这个表格是不是有效的数独表格。
解题思路
一种解法:用一个9维数组,存放每个数字是不是出现过,按列、行、小格遍历
另一种解法:
分别用三个数组,第一个数组放着某个数字在某一列是否出现过;第二个数组放着某个数字在某一行是否出现过;第三个数组放着某个数字在某一小格是否出现过。
第二种解法需要遍历表格一次而已,而第一种解法则需要遍历表格两次。实现第二种解法。
代码
class Solution { public: bool isValidSudoku(vector<vector<char>>& board) { bool checkCol[9][9] = {false}, checkRow[9][9] = {false}, checkBlock[9][9] = {false; for (int i = 0; i < board.size(); i++) { for (int j = 0; j < board[i].size(); j++) { if (board[i][j] != '.') { if (checkCol[i][board[i][j] - '1'] || checkRow[j][board[i][j] - '1'] || checkBlock[i / 3 * 3 + j / 3][board[i][j] - '1']) { return false; } checkCol[i][board[i][j] - '1'] = true; checkRow[j][board[i][j] - '1'] = true 4000 ; checkBlock[i / 3 * 3 + j / 3][board[i][j] - '1'] = true; } } } return true; } };
相关文章推荐
- 36.[Leetcode]Valid Sudoku
- LeetCode-36-Valid Sudoku 位运算状压,python的ascll,char互转
- LeetCode-36. Valid Sudoku (JAVA)(有效数独)
- Leetcode_36_Valid Sudoku
- LeetCode---(36) Valid Sudoku
- LeetCode: 36. Valid Sudoku
- LeetCode 36: Valid Sudoku
- LeetCode 36 Valid Sudoku
- Leetcode 36 Valid Sudoku
- LeetCode 36.Valid Sudoku
- [Leetcode 36, easy] Valid Sudoku
- leetCode 36. Valid Sudoku(数独) 哈希
- 【LEETCODE】36-Valid Sudoku
- leetcode 36: Valid Sudoku
- [LeetCode]36. Valid Sudoku
- Leetcode[36]-Valid Sudoku
- leetcode 36. Valid Sudoku
- LeetCode----36. Valid Sudoku(有效数读)
- LeetCode(36)--Valid Sudoku
- LeetCode 36. Valid Sudoku