原题链接在这里:https://leetcode.com/problems/valid-sudoku/

题目:

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.

题解:

先一行一行检查,再一列一列检查,这里注意外层for loop是j

最后一个一个小方块来检查,关键是如何检查sub box. 这里设值index 0-8 box, loop row with box/3*3 - box/3*3+3, loop column with box%3*3 - box%3*3+3.

Time Complexity: O(n^2). n = board.length. Space: O(1).

AC Java:

 1 public class Solution {
 2     public boolean isValidSudoku(char[][] board) {
 3         if(board == null || board.length != 9 || board[0].length != 9){
 4             return false;
 5         }
 6
 7         HashSet<Character> hs = new HashSet<Character>();
 8         //check each row
 9         for(int i = 0; i<board.length; i++){
10             hs.clear();
11             for(int j = 0; j<board[0].length; j++){
12                 if(board[i][j] != '.'){
13                     if(!hs.contains(board[i][j])){
14                         hs.add(board[i][j]);
15                     }else{
16                         return false;
17                     }
18                 }
19             }
20         }
21
22         //check each column
23         for(int j = 0; j<board[0].length; j++){
24             hs.clear();
25             for(int i = 0; i<board.length; i++){
26                 if(board[i][j] != '.'){
27                     if(!hs.contains(board[i][j])){
28                         hs.add(board[i][j]);
29                     }else{
30                         return false;
31                     }
32                 }
33             }
34         }
35
36         //check each subbox
37         for(int box = 0; box<9; box++){
38             hs.clear();
39             for(int i = box/3*3; i<box/3*3+3; i++){
40                 for(int j = box%3*3; j<box%3*3+3; j++){
41                     if(board[i][j] != '.'){
42                         if(!hs.contains(board[i][j])){
43                             hs.add(board[i][j]);
44                         }else{
45                             return false;
46                         }
47                     }
48                 }
49             }
50         }
51         return true;
52     }
53 }

跟上Sudoku Solver.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/4825064.html

LeetCode Valid Sudoku相关推荐

  1. LeetCode - Valid Sudoku

    题目: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

  2. LeetCode: Valid Sudoku

    一次过.. 1 class Solution { 2 public: 3 bool isValidSudoku(vector<vector<char> > &board ...

  3. LeetCode 36. Valid Sudoku(九宫格数独)

    依次检查每行,每列,每个子九宫格是否出现重复元素,如果出现返回false,否则返回true. 难点在于表示第i个九宫格每个格点的坐标. 观察行号规律: 第0个九宫格:000111222; 第1个九宫格 ...

  4. leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)

    36. Valid Sudoku https://leetcode.com/problems/valid-sudoku/ 题解 class Solution {public boolean isVal ...

  5. LeetCode 36. Valid Sudoku

    LeetCode 36. Valid Sudoku Solution1:我的答案,比较笨.但是清晰易懂好上手啊~~~ class Solution { public:bool isValidSudok ...

  6. Valid Sudoku leetcode java

    题目: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

  7. 【LeetCode从零单排】No36 Valid Sudoku

    题目       判断数独是否成立的一道题,看的是某大神的答案,写的太漂亮了. Determine if a Sudoku is valid, according to: Sudoku Puzzles ...

  8. leetcode之Valid Sudoku有效的数独(一步步改进代码)

    题目链接:Valid Sudoku有效的数独 题目已经十分确定的说了只有1~9,因此标记法无疑是非常好的选择. 基本思路:对行.列.小数独块分别用一个size为9的数组来标记数字1~9在本行(列/块) ...

  9. [leetcode]36. Valid Sudoku c语言

    题目 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

最新文章

  1. 《几何与代数导引》习题1.35.4
  2. 马斯克即将解锁海上发射!SpaceX海洋太空港最早明年可投入使用
  3. linux 搭建Tomcat
  4. linux运维工程师
  5. python处理json_Python处理JSON
  6. postgresql存储函数实现大量模拟数据插入
  7. checkPathValidity 检查所有agent的corridor的m_path是否有效
  8. linux系统调用函数printf,使用AT&T语法将整数打印为字符串,并使用Linux系统调用而不是printf...
  9. [leetcode]241. 为运算表达式设计优先级
  10. Structs框架原理
  11. SMB协议(445)
  12. 黑盒测试 白盒测试
  13. 网络创业理论与实践(网络通识)
  14. 6个好用免费的LiDAR数据处理软件【2021最新】
  15. 生产级搭建openresty+waf防火墙
  16. android tv盒子哪个好用,2020什么电视盒子最好?超良心的三大实用选购技巧
  17. [博客杂志]2007年中国最红的十大美女明星
  18. mysql DAYOFWEEK 和 WEEKDAY函数
  19. 输入自变量范围matlab,matlab已知约束条件求自变量范围
  20. 计算机毕业设计源代码Python毕业论文题目基于Python实现的学生在线选课系统[包运行成功]

热门文章

  1. 依赖注入 这样的坑游戏编程要谨慎
  2. 经验分享:聊聊多人游戏同步那点事
  3. 超过一半的受访者表示愿意升级到Windows 11
  4. TCP/UDP常见端口参考(超全_面试题常用_建议收藏)
  5. Oracle Spatial-元数据及SDO_GEOMETRY
  6. 解决SecureCRT中文版数据库里没找到防火墙'无'的错误提示
  7. Linux server配置安装Java,Tomcat服务器
  8. ----------------学习进度表---------------------------------
  9. android 介绍0
  10. python和javascript哪个好_Python