Leetcode #36. Valid Sudoku 数独游戏验证 解题报告
2016-04-07 23:59
453 查看
1 解题思想
九宫格验证,验证这个数独游戏的棋盘是否合法,这题做的不是求解答案,只是看给定的棋盘是否合法!做法没什么特别的,分块,行,列都要验证,即一个分组单位里1-9有且只能出现一次
注意空间优化
2 原题
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.
3 AC解
public class Solution { static int position[]=new int[]{2,4,8,16,32,64,128,256,512}; /** * 分别判断行 列 和 格子内的就可以了~~~ * 这里我使用的位运算来降低内存。。都是2的n次,那么对应的位置上直接使用位运算就能判断了 * */ public boolean isValidSudoku(char[][] board) { int col[]=new int[9]; int row[]=new int[9]; int zone[]=new int[9]; int i,j,mask,qid; for(i=0;i<9;i++){ for(j=0;j<9;j++){ if(board[i][j]=='.') continue; mask=position[board[i][j]-'1']; qid=(i/3)*3+j/3; if( (col[j] | mask) == col[j] || (row[i] | mask) == row[i] ||(zone[qid] | mask) == zone[qid]) return false; col[j]=col[j]|mask; row[i]=row[i]|mask; zone[qid]=zone[qid]|mask; } } return true; } }
相关文章推荐
- iOS搜索框的实现
- C++混合编程之idlcpp教程Python篇(5)
- Example011表单中修改内容
- bigdatasupport
- U盘装系统win7
- 程序员:孤独的人是可耻的!
- 无法连接到visual studio开发服务器的解决方法不仅仅是关闭防火墙
- 快速排序
- Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析
- 实验室炼狱杂谈之一
- android自定义滑动选择开关
- 关于strcpy函数的实现
- 巧用setContentView的应用
- 结构体练手
- PHP设计模式之适配器模式
- 冒泡排序
- Google Test(GTest)使用方法和源码解析——自定义输出技术的分析和应用
- 面试
- windows客户端开发--为你的客户端增加日志系统(log4cplus)
- 01背包路径输出