leetcode 37. 解数独
题目:37. 解数独
编写一个程序,通过已填充的空格来解决数独问题。
一个数独的解法需遵循如下规则:
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
空白格用 ‘.’ 表示。
一个数独。
答案被标成红色。
说明:
- 给定的数独序列只包含数字 1-9 和字符 ‘.’ 。
- 你可以假设给定的数独只有唯一解。
- 给定数独永远是 9x9 形式的。
方法:Backtracking(回溯)
思路:Backtracking(回溯),遍历board,找到没有填入数字的点,遍历字符1-9,通过isPut方法判断是否可以填入,直到填完所有点为止。
运行数据:执行用时:9 ms,内存消耗:36.2 MB
复杂度分析:
- 时间复杂度:O((9!)^9),由于该题board是固定的即9 * 9,所以最坏情况第一行第一个位置有9种情况,第二个位置有8种情况,……,第九个位置有1种可能,即第一行有9!情况,一共有9行所以,时间复杂度为O((9!)^9)。
- 空间复杂度:O(9 * 9),由于该题board是固定的即9 * 9,所以空间复杂度为O(9 * 9)。
1 | // LeetCode指定调用方法 |
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!