zoukankan      html  css  js  c++  java
  • Leetcode: 36. Valid Sudoku

    Description

    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 '.'.

    Note:
    A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

    思路

    • 判断数独是否有效
    • 即每一行不能出现重复,每一列不能出现重复,从上到下的每3 X 3 的小格子不能出现重复
    • 用多个bitset<9>做映射,该位置0表未出现该数字,该位置1表出现
    • 然后将9行,9列,9个小矩阵映射到27个bitset<9>上面

    代码

    • O(n^2)
    class Solution {
    public:
       bool isValidSudoku(vector<vector<char>>& board) {
    		int m = board.size();
    		int n = board[0].size();
    
    		vector<bitset<9>> flag(27, 0);
    		int num = 0;
    		for (int i = 0; i < m; ++i){
    			for (int j = 0; j < n; ++j){
    				if (board[i][j] == '.') continue;
    				else{
    					num = board[i][j] - '1';
    					if (flag[i].test(num) || flag[9 + j].test(num) || flag[18 + (i / 3) * 3 + j / 3].test(num)) 
    						return false;
    					else {
    						flag[i].set(num);
    						flag[9 + j].set(num);
    						flag[18 + (i / 3) * 3 + j / 3].set(num);
    					}
    				}
    			}
    		}
    
    		return true;
    	}
    };
    
  • 相关阅读:
    一直追求技术好吗?
    设计模式前言
    vba 行 列 单元格 统计
    JavaScript 仿LightBox内容显示效果
    Excel 比大小
    多态
    JavaScript 图片切换展示效果
    vba 单元格 一系例操作
    关于Flex的争论(富客户端、弱客户端)
    input文本框样式代码实例
  • 原文地址:https://www.cnblogs.com/lengender-12/p/6838612.html
Copyright © 2011-2022 走看看