zoukankan      html  css  js  c++  java
  • 有效数独

    问题描述

       判断一个 9x9 的数独是否有效。需要满足三个条件:

    1.  数字 1-9 在每一行只能出现一次

    2.  数字 1-9 在每一列只能出现一次

    3.  数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 

     

    解决思路

      使用三个数组分别保存每行、每列、每个小方格中字符 1-9 出现的次数,遍历过程中,如果出现了某个位置的次数已经大于 0 的字符,则说明不满足条件了,返回 False;遍历结束说明这是一个有效数独,返回 True。

    Java代码

     1 public class Solution {
     2     public boolean isValidSudoku2(char[][] board) {
     3        // 利用数组判断数字是否重复,true代表重复
     4        // row[7][1] 代表第 7+1 行 的字符 1+1 = 2 已经使用过了
     5         int[][] row = new int[9][9];
     6         int[][] col = new int[9][9];
     7         int[][][] cell = new int[3][3][9];
     8         for (int i = 0; i < 9; i ++) {
     9             for (int j = 0; j < 9; j ++) {
    10                 if (board[i][j] != '.') {
    11                     int k = board[i][j] - '1';
    12                     if (row[i][k] > 0 || col[j][k] > 0 || cell[i/3][j/3][k] > 0) {
    13                         return false;
    14                     }
    15                     row[i][k] ++;
    16                     col[j][k] ++;
    17                     cell[i/3][j/3][k] ++;
    18                 }
    19             }
    20         }
    21         return true;
    22     }
  • 相关阅读:
    java值类型和引用类型
    0513作业
    随机四位验证码
    1-36随机生成6个不重复的数
    java随机数
    0509作业
    作业0508
    字符集
    eclipse快捷键
    数据类型 转换
  • 原文地址:https://www.cnblogs.com/dogeLife/p/11016989.html
Copyright © 2011-2022 走看看