您的位置:首页 > 编程语言 > Python开发

[LeetCode]题解(python):036-Valid Sudoku

2015-10-31 21:19 435 查看
[b]题目来源:[/b]

  https://leetcode.com/problems/valid-sudoku/

[b]题意分析:[/b]

  判断一个数独是不是可以满足规则的,也就是列行和小九宫格都是包括有且仅有1到9.

[b]题目思路:[/b]

  刚开始看这个题目的时候觉得就是要先把数独给填好,可以填好就是true的,否者就是false。不过这只是一个easy难度的题目,不可能要这么做吧。然后我测试了一些数据,发现[".87654321","2........","3........","4........","5........","6........","7........","8........","9........"]这个竟然是true。因为如果要玩,那么第一个数填1和9都是错的,所以他应该是不满足的,应该false,但是他的答案是true的。

  所以,题目应该要判断的是当前的状态是不是满足规则的。所以值需要将所有的行列小九宫判断一下就行了。

[b]代码(python):[/b]

  

class Solution(object):
def isValidSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
#列判断
i = 0
while i < 9:
j = 0
d = {}
while j < 9:
if board[i][j] != '.' and board[i][j] in d:
return False
else:
d[board[i][j]] = True
j += 1
i += 1
#行判断
j = 0
while j < 9:
i = 0
d = {}
while i < 9:
if board[i][j] != '.' and board[i][j] in d:
return False
else:
d[board[i][j]] = True
i += 1
j += 1
#九宫格
i = 0
while i < 9:
j = 0
while j < 9:
m = 0;d = {}
while m < 3:
n = 0
while n < 3:
if board[i + m][j + n] != '.' and board[i + m][j + n] in d:
return False
else:
d[board[i + m][j + n]] = True
n += 1
m += 1
j += 3
i += 3
return True


View Code

转载请注明出处:http://www.cnblogs.com/chruny/p/4926247.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: