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

    https://oj.leetcode.com/problems/valid-sudoku/

    思路:按照规则,先检查行,然后检查列,然后检查9格。

    public class Solution {
    	public boolean isValidSudoku(char[][] board) {
    
    		int i;
    		for (i = 0; i < 9; i++) {
    			if (!isValid(board, i, i + 1, 0, 9))
    				return false;
    		}
    
    		int j;
    		for (j = 0; j < 9; j++) {
    			if (!isValid(board, 0, 9, j, j + 1))
    				return false;
    		}
    
    		for (i = 0; i < 9; i = i + 3)
    			for (j = 0; j < 9; j = j + 3) {
    				if (!isValid(board, i, i + 3, j, j + 3))
    					return false;
    			}
    
    		return true;
    
    	}
    
    	private boolean isValid(char[][] board, int iBegin, int iEnd, int jBegin,
    			int jEnd) {
    		HashSet<Character> set = new HashSet<Character>();
    		for (int i = iBegin; i < iEnd; i++)
    			for (int j = jBegin; j < jEnd; j++) {
    				if (set.contains(board[i][j]))
    					return false;
    				else if (board[i][j] != '.')
    					set.add(board[i][j]);
    			}
    		return true;
    
    	}
    
    	public static void main(String[] args) {
    		char[][] board = { { '5', '3', '.', '.', '7', '.', '.', '.', '.' },
    				{ '6', '.', '.', '1', '9', '5', '.', '.', '.' },
    				{ '.', '9', '8', '.', '.', '.', '.', '6', '.' },
    				{ '8', '.', '.', '.', '6', '.', '.', '.', '3' },
    				{ '4', '.', '.', '8', '.', '3', '.', '.', '1' },
    				{ '7', '.', '.', '.', '2', '.', '.', '.', '6' },
    				{ '.', '6', '.', '.', '.', '.', '2', '8', '.' },
    				{ '.', '.', '.', '4', '1', '9', '.', '.', '5' },
    				{ '.', '.', '.', '.', '8', '.', '.', '7', '9' } };
    
    		System.out.println(new Solution().isValidSudoku(board));
    	}
    
    }
  • 相关阅读:
    SQL大圣之路笔记——SQL 字段中英文字母如何区分大小写
    Python(二十五)
    Python(二十四)
    Python(二十二)
    Python(二十一)
    Python(二十)
    Python(十九)
    Python(十八)
    python(十七)
    python(十六)
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3810734.html
Copyright © 2011-2022 走看看