当前位置:网站首页>LeetCode#36. Effective Sudoku
LeetCode#36. Effective Sudoku
2022-07-06 15:21:00 【Rufeng ZHHH】
subject :
Please judge a 9 x 9 Is the Sudoku effective . It only needs According to the following rules , Verify that the numbers you have filled are valid .
Numbers 1-9 Only once in a row .
Numbers 1-9 It can only appear once in each column .
Numbers 1-9 Separated by thick solid lines in each 3x3 Only once in the palace .( Please refer to the example figure )
Be careful :
An effective Sudoku ( Part has been filled in ) Not necessarily solvable .
Just follow the above rules , Verify that the numbers you have filled are valid .
Blank space '.' Express .
Example 1:

Input :board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output :true
Example 2:
Input :board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output :false
explain : Except for the first number in the first line from 5 Change it to 8 outside , The other numbers in the space are the same as Example 1 identical . But because of the 3x3 There are two in the palace 8 There is , So this Sudoku is invalid .
Tips :
board.length == 9
board[i].length == 9
board[i][j] It's a number (1-9) perhaps '.'
source : Power button (LeetCode)
link : Power button
Personally, I think this problem is mainly about the third condition of Sudoku judgment, which is relatively difficult , The first two conditions should be able to understand the principle by looking at the code , We mainly talk about the judgment process of the third condition .
Let's create a string first , The following methods will be used .
store="0123456789"Conditions for a :
for i in board:
for j in store:
num=i.count(j)
if num>1:
return FalseCondition 2 :
nums=0
while nums < 9:
ls=[]
for i in board:
ls.append(i[nums])
for j in store:
if ls.count(j)>1:
return False
nums+=1Condition 3 :
We know that every Sudoku matrix has 9 A small cube matrix , So we can think of a way , Judge whether a small cube matrix is qualified each time , In this case, we have to judge 9 Time ( This is the cycle 9 Time ).
Subdivide again , Every three small square matrices are in one row , So we can judge three times in each line ( loop 3 Time ).
Through this , With the help of method 2 ( Create another list ) Same method , We can judge whether each of our small squares is qualified .
Here it is , I created two variables to help with the loop ,line: Indicates the number of rows indexed ; lis: Indicates the number of columns in the index .
line=0;lis=0;ll=[]
for i in range(3): # Circle the three lines ( One big line corresponds to three small lines )
for i in range(3): # Every big line ( Three small lines ), Cycle three times ,3 ride 3 be equal to 9
for j in board[line:line+3]:
for k in j[lis:lis+3]:
ll.append(k)
for m in store:
if ll.count(m)>1:
return False
lis+=3 # Advance the number of columns by three , Enter the next cube matrix of the big row
ll=[] # Notice that after judging each small cube matrix , Clear list
lis=0 # After a large line of each cycle , Zero the number of columns
line+=3 # Go a long way Last , If the above judgment does not return False, Then this is an effective Sudoku , We return at the end True that will do .
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
store="123456789"
for i in board:
for j in store:
num=i.count(j)
if num>1:
return False
nums=0
while nums < 9:
ls=[]
for i in board:
ls.append(i[nums])
for j in store:
if ls.count(j)>1:
return False
nums+=1
line=0;lis=0;ll=[]
for i in range(3):
for i in range(3):
for j in board[line:line+3]:
for k in j[lis:lis+3]:
ll.append(k)
for m in store:
if ll.count(m)>1:
return False
lis+=3
ll=[]
lis=0
line+=3
return True
边栏推荐
- Leetcode simple question: check whether the numbers in the sentence are increasing
- Global and Chinese market of barrier thin film flexible electronics 2022-2028: Research Report on technology, participants, trends, market size and share
- ucore lab2 物理内存管理 实验报告
- ucorelab4
- 几款开源自动化测试框架优缺点对比你知道吗?
- The minimum number of operations to convert strings in leetcode simple problem
- How to build a nail robot that can automatically reply
- STC-B学习板蜂鸣器播放音乐2.0
- What to do when programmers don't modify bugs? I teach you
- Build your own application based on Google's open source tensorflow object detection API video object recognition system (I)
猜你喜欢

ucore Lab 1 系统软件启动过程

Install and run tensorflow object detection API video object recognition system of Google open source

The number of reversing twice in leetcode simple question
Future trend and planning of software testing industry

ucore lab5

MySQL数据库(四)事务和函数

MySQL development - advanced query - take a good look at how it suits you
![Cadence physical library lef file syntax learning [continuous update]](/img/0b/75a4ac2649508857468d9b37703a27.jpg)
Cadence physical library lef file syntax learning [continuous update]

Winter vacation daily question - maximum number of balloons

Word macro operation: convert the automatic number in the document into editable text type
随机推荐
CSAPP家庭作业答案7 8 9章
What is "test paper test" in software testing requirements analysis
UCORE lab5 user process management experiment report
Build your own application based on Google's open source tensorflow object detection API video object recognition system (II)
Jupyter installation and use tutorial
Description of Vos storage space, bandwidth occupation and PPS requirements
ucore lab5
Global and Chinese market of RF shielding room 2022-2028: Research Report on technology, participants, trends, market size and share
JDBC introduction
如何成为一个好的软件测试员?绝大多数人都不知道的秘密
Leetcode simple question: check whether the numbers in the sentence are increasing
FSM和i2c实验报告
Mysql database (III) advanced data query statement
Intensive learning notes: Sutton book Chapter III exercise explanation (ex17~ex29)
软件测试工作太忙没时间学习怎么办?
What are the commonly used SQL statements in software testing?
Expanded polystyrene (EPS) global and Chinese markets 2022-2028: technology, participants, trends, market size and share Research Report
MySQL development - advanced query - take a good look at how it suits you
ArrayList set
csapp shell lab