• 36. Valid Sudoku 有效的数独


    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

    The Sudoku board could be partially filled, where empty cells are filled with the character '.'.


    A partially filled sudoku which is valid.

    Note:
    A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated. 


    验证当前九宫格盘面是否有错误

    1. class Solution:
    2. def valid3by3(self, board, row, col):
    3. validPos = [
    4. [-1, -1], [-1, 0], [-1, 1],
    5. [0, -1], [0, 0], [0, 1],
    6. [1, -1], [1, 0], [1, 1]
    7. ]
    8. s = set()
    9. for pos in validPos:
    10. curVal = board[row + pos[0]][col + pos[1]]
    11. if curVal is ".":
    12. continue
    13. if curVal in s:
    14. return False
    15. s.add(curVal)
    16. return True
    17. def validRow(self, board, row):
    18. s = set()
    19. for curVal in board[row]:
    20. if curVal is ".":
    21. continue
    22. if curVal in s:
    23. return False
    24. s.add(curVal)
    25. return True
    26. def validCol(self, board, col):
    27. s = set()
    28. for row in board:
    29. curVal = row[col]
    30. if curVal is ".":
    31. continue
    32. if curVal in s:
    33. return False
    34. s.add(curVal)
    35. return True
    36. def isValidSudoku(self, board):
    37. """
    38. :type board: List[List[str]]
    39. :rtype: bool
    40. """
    41. pos3by3 = [
    42. [1, 1], [1, 4], [1, 7],
    43. [4, 1], [4, 4], [4, 7],
    44. [7, 1], [7, 4], [7, 7]
    45. ]
    46. for pos in pos3by3:
    47. if not self.valid3by3(board, pos[0], pos[1]):
    48. return False
    49. for row in range(0, 9):
    50. if not self.validRow(board, row):
    51. return False
    52. for col in range(0, 9):
    53. if not self.validCol(board, col):
    54. return False
    55. return True
    56. s = Solution()
    57. board = [
    58. [".", "8", "7", "6", "5", "4", "3", "2", "1"],
    59. ["2", ".", ".", ".", ".", ".", ".", ".", "."],
    60. ["3", ".", ".", ".", ".", ".", ".", ".", "."],
    61. ["4", ".", ".", ".", ".", ".", ".", ".", "."],
    62. ["5", ".", ".", ".", ".", ".", ".", ".", "."],
    63. ["6", ".", ".", ".", ".", ".", ".", ".", "."],
    64. ["7", ".", ".", ".", ".", ".", ".", ".", "."],
    65. ["8", ".", ".", ".", ".", ".", ".", ".", "."],
    66. ["9", ".", ".", ".", ".", ".", ".", ".", "."]
    67. ]
    68. res = s.isValidSudoku(board)
    69. print(res)








  • 相关阅读:
    Xamarin 技术全解析
    Winform文件下载之WinINet
    MFC中动态添加控件----寻找多年的秘籍,吐血推荐
    CWnd与HWND的区别与转换
    WinExec, ShellExecute,CreateProcess 区别
    第一个OpenGL程序
    C++ GDI图形设备接口
    oracle直接读写ms sqlserver数据库(一)如何下载oracle database gateway for sqlserver
    Android签名详解
    7款精美HTML5应用
  • 原文地址:https://www.cnblogs.com/xiejunzhao/p/8319163.html
Copyright © 2020-2023  润新知