LeetCode 037 Sudoku Solver
来源:互联网 发布:禁止上网软件 编辑:程序博客网 时间:2024/06/13 18:19
题目要求编写函数求解数独问题。
这道题目中假设只有一个解。
思路一:
既然上一题已经做过了判断局面是否合法的问题,那么直接拿过来用。先把所有空位的位置存到一个vector中。然后用回溯法尝试用1~9填写每一个空位,判断是否合法,若合法则继续递归尝试下一个位置。
这个思路很直接,但是效率也很低。用C++编写后在LeetCode上运行时间为597 ms,击败6.41%。思路二
上一个思路中,每次判断是否合法都需要把9x9格子都扫一遍。其实没有必要,用数组维护每行、每列、每3x3格中存在的数字,尝试填数字的时候在数组中判断即可。
用C++编写后在LeetCode上运行时间为12 ms,大大加快,击败77.36%。思路三
上两种思路中的搜索顺序都是按照格子的排列顺序来的,其实我们可以从可以填的数字最少的空位开始搜索,这样可以提前排除掉一些搜索树中的枝叶。在回溯时每次寻找可以填的数字最少的空位。
用C++编写后在LeetCode上运行时间为4 ms,击败86.98%。
0 0
- [LeetCode]037-Sudoku Solver
- LeetCode 037 Sudoku Solver
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- leetcode 037 —— Sudoku Solver
- leetcode解题方案--037-- Sudoku Solver
- Leetcode 37 Sudoku Solver
- [Leetcode] Sudoku Solver
- Leetcode 37: Sudoku solver
- LeetCode Sudoku Solver
- [LeetCode]Sudoku Solver
- Leetcode Sudoku Solver
- LeetCode-Sudoku Solver
- LeetCode - Sudoku Solver
- LeetCode:Sudoku Solver
- 【leetcode】Sudoku Solver
- Leetcode: Sudoku Solver
- JavaScript 常量
- 循环赛日程表
- Looper机制:主线程中利用handler向工作线程发送消息
- CocoaPods
- 蓝桥杯历届-埃及分数
- LeetCode 037 Sudoku Solver
- ActiveMQ 实现负载均衡+高可用部署方案
- Centos 7 相关操作与配置
- String的equals方法和contentEquals方法的比较
- SQL SERVER 数学函数
- 利用反射机制编写一个程序,这个程序能把类中所有的成员变量赋值,并把操作信息输出到控制台。
- Android studio 使用JitPack发布library到Github开源库
- 使用PR_GET_NO_NEW_PRIVS 避免安全漏洞
- Android Studio Failed to complete Gradle execution