当前位置:网站首页>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 False
Condition 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+=1
Condition 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
边栏推荐
- ArrayList set
- Capitalize the title of leetcode simple question
- Global and Chinese markets for complex programmable logic devices 2022-2028: Research Report on technology, participants, trends, market size and share
- The minimum sum of the last four digits of the split digit of leetcode simple problem
- Stc-b learning board buzzer plays music
- Intensive learning notes: Sutton book Chapter III exercise explanation (ex17~ex29)
- Maximum nesting depth of parentheses in leetcode simple questions
- MySQL数据库(二)DML数据操作语句和基本的DQL语句
- Build your own application based on Google's open source tensorflow object detection API video object recognition system (II)
- Mysql的事务
猜你喜欢
随机推荐
Global and Chinese markets for complex programmable logic devices 2022-2028: Research Report on technology, participants, trends, market size and share
線程及線程池
Threads and thread pools
Global and Chinese market of RF shielding room 2022-2028: Research Report on technology, participants, trends, market size and share
Global and Chinese markets of electronic grade hexafluorobutadiene (C4F6) 2022-2028: Research Report on technology, participants, trends, market size and share
C4D quick start tutorial - creating models
Programmers, how to avoid invalid meetings?
Leetcode simple question: check whether two strings are almost equal
Intensive learning notes: Sutton book Chapter III exercise explanation (ex17~ex29)
软件测试有哪些常用的SQL语句?
Opencv recognition of face in image
MySQL数据库(三)高级数据查询语句
The most detailed postman interface test tutorial in the whole network. An article meets your needs
What if software testing is too busy to study?
Global and Chinese market of barrier thin film flexible electronics 2022-2028: Research Report on technology, participants, trends, market size and share
ucore lab5
软件测试工作太忙没时间学习怎么办?
C4D quick start tutorial - Introduction to software interface
The minimum number of operations to convert strings in leetcode simple problem
ucore lab8 文件系统 实验报告