
直接循环套循环判断,建立集合用于每行/列/格的是否重合的判断,若出现重合的情况则直接返回False,如果循环结束未出现错误则最后返回True,h,l分别用于格内的行与列的判断,将三个循环合并在一起可以增加函数的间接性。
- for i in range(9):
- row,col,ngg=set(),set(),set()
- for j in range(9):
- if board[i][j]!=".":
- if board[i][j] in row:
- return False
- row.add(board[i][j])
- if board[j][i]!=".":
- if board[j][i] in col:
- return False
- col.add(board[j][i])
- h,l=i//3*3+j//3,i%3*3+j%3
- if board[h][l]!= ".":
- if board[h][l] in ngg:
- return False
- ngg.add(board[h][l])
- return True
已知需要判断行/列/格三个不同位置的数字是否出现重复的情况,而由三者的类似性,我们可以将三个二重循环合并为一个循环,最后得出结果(哈希表的方法还不懂,正在争取早日解决哈希表相关的方法)