Valid Sudoku

论看懂题目的重要性!!!这道题目实际是要求判断给出的数独是否是有效数独(每行每列及每个小九宫格都没有重复数字),而不是填充数独!没有看清题目的人绞尽脑汁地在纸上把数独填满了,又绞尽脑汁地想着怎样用代码实现,结果知道真相后,只能绞尽脑汁地骂自己。。。再见












//分别对行,列,以及九宫格进行判断,确认是否每行、每列以及每个小九宫格都没有出现重复的数,是则返回true
public class Solution {
	public boolean isValidSudoku(char[][] board) {
        int i;
        int j;
        char p;
        for (i = 0; i < 9; i ++){ //行判断
        	int a[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        	for (j = 0; j < 9; j ++){
        		p = board[i][j];
        		if (p != '.'){
        			if (a[p - '1'] == 0){
        				a[p - '1'] = 1;
        			}
        			else{
        				return false;
        			}
        		}
        	}
        }
        for (i = 0; i < 9; i ++){  //列判断
        	int a[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        	for (j = 0; j < 9; j ++){
        		p = board[j][i];
        		if (p != '.'){
        			if (a[p - '1'] == 0){
        				a[p - '1'] = 1;
        			}
        			else{
        				return false;
        			}
        		}
        	}
        }
        int row;
        int col;
        int r;
        int c;
        for (i = 0; i < 9; i ++){
        	row = i / 3 * 3; 
        	col = i % 3 * 3;
        	int a[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        	for (r = row; r < (row + 3); r ++){
        		for (c = col; c < (col + 3); c ++){
        			p = board[r][c];
            		if (p != '.'){
            			if (a[p - '1'] == 0){
            				a[p - '1'] = 1;
            			}
            			else{
            				return false;
            				}
            			}
            		}
        		}
        	}
        return true;
        }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值