当前位置: 首页 > news >正文

37. 解数独

Problem: 37. 解数独

文章目录

  • 思路
  • 解题过程
  • 复杂度
  • Code

思路

递归回溯

解题过程

  1. 找到空格子(用 '.' 表示)。
  2. 尝试填入 1–9,每次填之前要检查是否合法:
  • 同一行没有重复;
  • 同一列没有重复;
  • 当前 3×3 宫格没有重复。
  1. 如果合法,就递归继续填下一个格子。
  2. 如果递归能走到最后(数独解完),就返回 true
  3. 如果不行,就回溯,把格子恢复成 '.',再尝试下一个数字。

复杂度

  • 时间复杂度: O(9n)O(9^n)O(9n),n为数独中空格的个数。
  • 空间复杂度: 等价于,O(1)O(1)O(1)

Code

class Solution {
public:void solveSudoku(vector<vector<char>>& board) { dfs(board); }bool dfs(vector<vector<char>>& board) {for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (board[i][j] != '.') {continue;}for (int c = '1'; c <= '9'; c++) {if (isValid(board, i, j, c)) {board[i][j] = c;if (dfs(board)) {return true;}board[i][j] = '.';}}return false;}}return true;}bool isValid(vector<vector<char>>& board, int row, int col, char c) {for (int i = 0; i < 9; i++) {if (board[row][i] == c) {return false;}if (board[i][col] == c) {return false;}int r = (row / 3) * 3 + i / 3;int l = (col / 3) * 3 + i % 3;if (board[r][l] == c) {return false;}}return true;}
};
http://www.dtcms.com/a/360493.html

相关文章:

  • 解锁Tensor Core性能:深入探索CUDA Warp矩阵操作
  • Dify构建AI应用
  • FART 主动调用组件深度解析:破解 ART 下函数抽取壳的终极武器
  • #Datawhale 组队学习#8月-工作流自动化n8n入门-3
  • 第七章 使用角色和Asible内容集合简化Playbook
  • 4.4 光照(4) - 高光反射
  • 硬件工程师成长之路:从入门到精通的技术旅程
  • [Plecs基础知识系列]建立自定义模块/子系统(Subsystem)
  • C++ 面试高频考点 力扣 69. x 的平方根 二分查找 题解 每日一题
  • Linux网络socket套接字(中)
  • 切片语法[::-1]及其可用的类型
  • 基于单片机智能鞋柜/智能鞋橱/智能鞋盒
  • Linux - #操作系统概念 #权限
  • 获取某天的零点日期
  • Java 异常处理全解析:从基础到实践
  • Rust 登堂 之 枚举和整数(八)
  • OpenCL C++ 平台与设备
  • 集合-单列集合(Collection)
  • DrissionPage 实战:动态 IP 代理与百度翻译 API 数据抓取
  • LeetCode算法日记 - Day 27: 计算右侧小于当前元素的个数、翻转对
  • Linux wlan 之网络问题定位分析 实例一
  • 如何确定虚拟机的IP
  • Qt QML连接数据库如何解决重复创建连接问题
  • 【嵌入式】【电机控制】基础知识列表
  • K8s调度核心:从Pod分配到节点优化
  • MATLAB R2010b系统环境(四)MATLAB帮助系统
  • LeetCode 每日一题 2025/8/25-2025/8/31
  • 模拟在线测试六线测试相关知识
  • 如何快速学习新技能
  • io进程线程;标准IO;0831