leetcode题解-36.Valid Sudoku
来源:互联网 发布:小型商城源码 编辑:程序博客网 时间:2024/05/22 03:27
题目:Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character ‘.’. A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
其实就是检验数独棋盘中已经给出的数字是否满足数独规则。即每行、每列、每个小九宫格内的数字是否重复。
思路:遍历棋盘,分别考察行、列、九宫格内数字是否满足条件,共九行,九列,九个九宫格。
1,使用三个hashset分别存储三个维度
public boolean isValidSudoku1(char[][] board) { for(int i=0; i<9; i++) { Set<Character> row = new HashSet<Character>(); Set<Character> col = new HashSet<Character>(); Set<Character> cube = new HashSet<Character>(); for(int j=0; j<9; j++) { if(board[i][j] != '.') if(!row.add(board[i][j])) return false; if(board[j][i] != '.') if(!col.add(board[j][i])) return false; int RowIndex = 3*(i/3); int ColIndex = 3*(i%3); if(board[RowIndex + j/3][ColIndex + j%3] != '.') if(!cube.add(board[RowIndex+j/3][ColIndex + j%3])) return false; } } return true; }
2,使用数组存储。这种方法速度更快。
public boolean isValidSudoku(char[][] board) { int [] vset = new int [9]; int [] hset = new int [9]; int [] bckt = new int [9]; int idx = 0; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (board[i][j] != '.') { idx = 1 << (board[i][j] - '0') ; if ((hset[i] & idx) > 0 || (vset[j] & idx) > 0 || (bckt[(i / 3) * 3 + j / 3] & idx) > 0) return false; hset[i] |= idx; vset[j] |= idx; bckt[(i / 3) * 3 + j / 3] |= idx; } } } return true;}
0 0
- leetcode题解-36.Valid Sudoku
- leetcode题解-36. Valid Sudoku
- LeetCode题解:Valid Sudoku
- LeetCode题解:Valid Sudoku
- leetcode 题解 || Valid Sudoku 问题
- LeetCode 题解(231) : 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
- 36. Valid Sudoku LeetCode
- leetcode 36. Valid Sudoku
- LeetCode *** 36. Valid Sudoku
- leetcode 36. Valid Sudoku
- [LeetCode]36. Valid Sudoku
- 如何解决PHP里大量数据循环时内存耗尽的问题
- 重定向标准输出到文件有时看不到文件的内容
- org.apache.ibatis.binding.BindingException: Parameter 'set' not found
- 根据指定的图像路径和大小来获取缩略图
- java正则表达式匹配小括号内的内容
- leetcode题解-36.Valid Sudoku
- 工作杂记
- TLD Tracker
- input标签file类型,选择多个文件进行上传
- Git使用学习
- 正向代理与反向代理的区别
- odoo 新手之路-__openerp__.py配置信息
- 希尔排序与快速排序
- 基础文本处理