zoukankan      html  css  js  c++  java
  • Java [leetcode 36]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.

    解题思路:

    这道题的解题思路比较简单,因为只需要判断已经填入的数字是否合法,那么需要判断每行每列以及每个9宫格的数字是否有重复,很自然的联想到HashSet,因为每个Set里面的元素是不能相同的。顺着这个思路,那么我们为行、列及九宫格各设置9个Hashset元素的数组,每次进行判断即可。

    代码如下:

    public class Solution {
        public boolean isValidSudoku(char[][] board) {
    		HashSet[] row = new HashSet[9];
    		HashSet[] col = new HashSet[9];
    		HashSet[] cell = new HashSet[9];
    		for (int i = 0; i < 9; i++) {
    			row[i] = new HashSet<Character>();
    			col[i] = new HashSet<Character>();
    			cell[i] = new HashSet<Character>();
    		}
    		for (int i = 0; i < 9; i++) {
    			for (int j = 0; j < 9; j++) {
    				if (board[i][j] != '.') {
    					if (row[i].contains(board[i][j])
    							|| col[j].contains(board[i][j])
    							|| cell[3 * (i / 3) + j / 3].contains(board[i][j]))
    						return false;
    					else {
    						row[i].add(board[i][j]);
    						col[j].add(board[i][j]);
    						cell[3 * (i / 3) + j / 3].add(board[i][j]);
    					}
    				}
    			}
    		}
    		return true;
    	}
    }
    
  • 相关阅读:
    第二次博客作业
    C博客作业00--我的第一篇博客
    第1次任务:购物车程序的面向对象设计
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    C博客作业05-指针
    C博客作业04--数组
    C博客作业03--函数
  • 原文地址:https://www.cnblogs.com/zihaowang/p/4967333.html
Copyright © 2011-2022 走看看