博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - 36. Valid Sudoku
阅读量:5815 次
发布时间:2019-06-18

本文共 2167 字,大约阅读时间需要 7 分钟。

36. Valid Sudoku 

 ----------------------------------------------------------------------------

Mean: 

给定一个数独,判断这个数独是否合法.

analyse:

略.

Time complexity: O(N)

 

view code

/**
* -----------------------------------------------------------------
* Copyright (c) 2016 crazyacking.All rights reserved.
* -----------------------------------------------------------------
*       Author: crazyacking
*       Date  : 2016-03-02-18.28
*/
#include <queue>
#include <cstdio>
#include <set>
#include <string>
#include <stack>
#include <cmath>
#include <climits>
#include <map>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using
namespace
std;
typedef
long
long(
LL);
typedef
unsigned
long
long(
ULL);
const
double
eps(
1e-8);
class
Solution
{
public
:
   
bool
isValidSudoku(
vector
<
vector
<
char
>>&
board)
   
{
       
int
row
=
board
.
size();
       
int
col
=
board
[
0
].
size();
       
set
<
int
>
se;
       
// -------
       
for(
int
i
=
0;
i
<
row;
++
i)
       
{
           
se
.
clear();
           
for(
int
j
=
0;
j
<
col;
++
j)
               
if(
board
[
i
][
j
]
!=
'.')
               
{
                   
int
k
=
board
[
i
][
j
]
-
'0';
                   
if(
se
.
count(
k))
                       
return
false;
                   
se
.
insert(
k);
               
}
       
}
       
// -------
       
for(
int
i
=
0;
i
<
col;
++
i)
       
{
           
se
.
clear();
           
for(
int
j
=
0;
j
<
row;
++
j)
               
if(
board
[
j
][
i
]
!=
'.')
               
{
                   
int
k
=
board
[
j
][
i
]
-
'0';
                   
if(
se
.
count(
k))
                       
return
false;
                   
se
.
insert(
k);
               
}
       
}
       
//*****
       
for(
int
i
=
0;
i
<
row
-
2;
i
+=
3)
       
{
           
for(
int
j
=
0;
j
<
col
-
2;
j
+=
3)
               
if(
!
checkBoard(
board
,
i
,
j))
                   
return
false;
       
}
       
return
true;
   
}
   
bool
checkBoard(
vector
<
vector
<
char
>>&
board
,
int
bi
,
int
bj)
   
{
       
set
<
int
>
se;
       
for(
int
i
=
bi;
i
<
bi
+
3;
++
i)
       
{
           
for(
int
j
=
bj;
j
<
bj
+
3;
++
j)
           
{
               
if(
board
[
i
][
j
]
!=
'.')
               
{
                   
int
k
=
board
[
i
][
j
]
-
'0';
                   
if(
se
.
count(
k))
                       
return
false;
                   
se
.
insert(
k);
               
}
           
}
       
}
       
return
true;
   
}
};
int
main()
{
   
freopen(
"H:
\\
Code_Fantasy
\\
in.txt"
,
"r"
,
stdin);
   
vector
<
vector
<
char
>>
ve;
   
string s;
   
while(
cin
>>s)
   
{
       
vector
<
char
>
tempVe;
       
for(
int
i
=
0;s
[
i
];
++
i)
       
{
           
tempVe
.
push_back(s
[
i
]);
       
}
       
ve
.
push_back(
tempVe);
   
}
   
Solution
solution;
   
bool
ans
=
solution
.
isValidSudoku(
ve);
   
puts(
ans
?
"true"
:
"false");
   
return
0;
}
/*
*/

转载于:https://www.cnblogs.com/crazyacking/p/5236125.html

你可能感兴趣的文章
spring-boot支持websocket
查看>>
菜鸟笔记(一) - Java常见的乱码问题
查看>>
我理想中的前端工作流
查看>>
记一次Git异常操作:将多个repository合并到同一repository的同一分支
查看>>
CodeIgniter 3.0 新手捣鼓源码(一) base_url()
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
vSphere 6将于2月2日全球同步发表
查看>>
Android状态栏实现沉浸式模式
查看>>
让你的APP实现即时聊天功能
查看>>
iOS 绝对路径和相对路径
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
IntPtr 转 string
查看>>
学生名单
查看>>
(转) 多模态机器翻译
查看>>
【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
查看>>
矩阵常用归一化
查看>>
Oracle常用函数总结
查看>>
【聚能聊有奖话题】Boring隧道掘进机完成首段挖掘,离未来交通还有多远?
查看>>
USNews大学排名遭美国计算机研究学会怒怼,指排名荒谬要求撤回
查看>>
七大关键数据 移动安全迎来历史转折点
查看>>