LeetCode 36 : Valid Sudoku (Java)
2015-12-01 08:43
537 查看
解题思路:共有27个九宫格,每个九宫格9个元素,所以初始化一个27*9的数组来表示某个元素在某个九宫格里是否出现过,0表示没出现,1表示出现过。这个27*9的数组前0-8行用来存放1*9的9个九宫格,第9-17行用来存放9*1的9个九宫格,第18-26行用来存放3*3的9个九宫格。位于第i行第j列的元素k,分别位于27*9的数组的三个地方,第i行第k列,第j+9行第k列,第i/3*3+j/3+18行第k列。如果在向某个位置添加某个元素时发现该位置的标志已经为1,说明元素k已经在这个九宫格里出现过了,违背了有效性,那么立刻终止两层循环,返回false。
public class Solution { public boolean isValidSudoku(char[][] board) { boolean isV = true; int[][] nums = new int[27][9]; for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { if(board[i][j] == '.') continue; int tmp = Integer.parseInt(board[i][j] + "") - 1; if(nums[i][tmp] == 1 || nums[j+9][tmp] == 1 || nums[(i/3)*3 + j/3 + 18][tmp] == 1) { isV = false; break; } else { nums[i][tmp] = 1; nums[j+9][tmp] = 1; nums[(i/3)*3 + j/3 + 18][tmp] = 1; } } if(isV == false) break; } return isV; } }
相关文章推荐
- C#中遍历Hashtable的4种方法
- C#将HashTable中键列表或值列表复制到一维数组的方法
- JAVASCRIPT HashTable
- java hashtable实现代码
- java中vector与hashtable操作实例分享
- Java中HashMap和Hashtable的区别浅析
- C#将hashtable值转换到数组中的方法
- c语言实现的hashtable分享
- 利用C语言实现HashTable
- php中hashtable实现示例分享
- 全面解析java中的hashtable
- 浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别
- java中Hashtable和HashMap的区别分析
- Java中HashMap和Hashtable及HashSet的区别
- 浅析Java中Map与HashMap,Hashtable,HashSet的区别
- c#限时作业
- 深入理解PHP之数组(遍历顺序)
- Hashtable和HashMap
- Delphi 6 中使用 Hashtable
- Java 中HashMap 和HashTable的区别