【leetcode】36. 有效的数独

暴力,遍历竖列,横行,九个正方形序列。

package pro36;

import java.util.Arrays;
import java.util.Objects;

/**
 * @Author: qiqu
 */
public class Solution {

    public static boolean[] c = new boolean[9];
    public boolean isValidSudoku(char[][] board) {

        for(int i=0; i<9; i++){
            Arrays.fill(c, false);
            for(int j=0; j<9; j++){
                if(Objects.equals(board[i][j], '.')){
                    continue;
                }
                int loc = board[i][j] - '1';
                if(c[loc] == true){
                    return false;
                } else {
                    c[loc]=true;
                }
            }
        }

        for(int j=0;j<9;j++){
            Arrays.fill(c, false);
            for(int i=0; i<9; i++){
                if(Objects.equals(board[i][j], '.')){
                    continue;
                }
                int loc = board[i][j] - '1';
                if(c[loc] == true){
                    return false;
                } else {
                    c[loc]=true;
                }
            }
        }

        for(int x = 1; x<=3; x++){
            for(int y = 1; y <=3; y++){
                int xs = 3 * (x-1);
                int ys = 3 * (y-1);
                Arrays.fill(c, false);
                for(int i=0;i<3;i++){
                    for(int j=0;j<3;j++){
                        if(Objects.equals(board[xs + i][ys + j], '.')){
                            continue;
                        }
                        int loc = board[xs + i][ys + j] - '1';
                        if(c[loc] == true){
                            return false;
                        } else {
                            c[loc]=true;
                        }
                    }
                }
            }
        }
        return true;
    }
}
展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值