题目大意
判断一个数度棋盘是否合理,不需要能解。
- 横向0-9
- 纵向0-9
- 小方格0-9
解题思路
这台网上很多答案都在暴力穷举,正确的python答案应该是用set。代码
set()
leetcode内他人提交的答案,膜一下。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18class Solution(object):
def isValidSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
seen = set()
for i in range(9):
for j in range(9):
c = board[i][j]
if c == '.':
continue
if (i, c) in seen or (c, j) in seen or (i/3, j/3, c) in seen:
return False
seen.add((i, c))
seen.add((c, j))
seen.add((i/3, j/3, c))
return Truedict
我提交的,我强行按照标签给的hash table来做,把整个三中需要验证的都写为key,然后去组合这些key名,十分容易看懂,但最后通过时ms很高。所以用hash table的合理方案就是答案1(set)!!!
1 | class Solution(object): |
总结
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。