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

青岛北京网站建设公司网站开发北京公司

青岛北京网站建设公司,网站开发北京公司,资源类网站怎么做的,南阳市最新疫情这段代码解决的是 验证一个数独是否有效 的问题,其算法思想是基于 规则校验和状态记录。具体思想如下: 算法思想 核心目标: 检查每个数字在 同一行、同一列 和 同一个 3x3 子格 中是否重复。 状态记录: 使用 3 个布尔二维数组分别…

在这里插入图片描述

这段代码解决的是 验证一个数独是否有效 的问题,其算法思想是基于 规则校验和状态记录。具体思想如下:


算法思想

  1. 核心目标:

    • 检查每个数字在 同一行同一列同一个 3x3 子格 中是否重复。
  2. 状态记录:

    • 使用 3 个布尔二维数组分别记录:
      • 每行数字的出现情况 rows[i][num]
      • 每列数字的出现情况 cols[j][num]
      • 每个 3x3 子格数字的出现情况 boxes[boxIndex][num]
    • 通过这些状态数组,可以快速检查某个数字是否在对应位置已存在。
  3. 遍历与验证:

    • 遍历整个 9x9 的数独表格,对于每一个非空格的数字:
      • 计算数字对应的行、列和 3x3 子格索引。
      • 检查当前数字是否在对应行、列或 3x3 子格中已存在。
      • 如果存在,直接返回 false,表示数独无效。
      • 如果不存在,将该数字标记为已出现,更新状态数组。
    • 如果遍历完成未发现冲突,返回 true,表示数独有效。

算法步骤

1. 初始化数据结构

  • 定义三个布尔二维数组:rows[9][9], cols[9][9], boxes[9][9]
    • rows[i][num]: 记录第 i 行中数字 num+1 是否已经出现。
    • cols[j][num]: 记录第 j 列中数字 num+1 是否已经出现。
    • boxes[boxIndex][num]: 记录第 boxIndex 个 3x3 子格中数字 num+1 是否已经出现。

2. 遍历整个数独表格

  • 对于每个位置 (i, j)
    • 如果是空格('.'),直接跳过。
    • 将字符数字转换为整数索引 num,如字符 '5' 转换为整数 4(因为数组索引从 0 开始)。
    • 计算数字所属的 3x3 子格索引:boxIndex = (i / 3) * 3 + j / 3
      • 行和列分别除以 3 取整可以确定当前数字在哪一块 3x3 子格中。

3. 检查并标记状态

  • 检查状态数组:
    • 如果 rows[i][num] == true,说明第 i 行已经出现过数字 num+1
    • 如果 cols[j][num] == true,说明第 j 列已经出现过数字 num+1
    • 如果 boxes[boxIndex][num] == true,说明该 3x3 子格已经出现过数字 num+1
  • 如果任何一项为 true,直接返回 false
  • 否则,更新状态数组,将当前数字标记为已出现。

4. 返回结果

  • 如果遍历完成,未发现任何冲突,则返回 true,表示数独有效。

关键点说明

1. 如何定位到 3x3 子格?

  • 整个数独分为 9 个 3x3 子格:
    子格索引:
    0  1  2
    3  4  5
    6  7  8
    
  • 每个数字的位置 (i, j) 通过公式 (i / 3) * 3 + j / 3 定位到对应的子格索引。

2. 字符数字如何转换为数组索引?

  • 数独中数字以字符形式存储,例如 '5'
  • 将其转为整数索引:num = board[i][j] - '1'
    • '1' 转换为索引 0'9' 转换为索引 8

3. 为什么需要状态数组?

  • 状态数组是为了快速记录和检查数字的存在性。
  • 使用布尔值记录 truefalse,可以节省时间复杂度,相较于遍历行、列和子格的直接检查更加高效。

时间和空间复杂度分析

  1. 时间复杂度:

    • 遍历整个 9x9 表格,时间复杂度为 (O(9 \times 9) = O(81)),即常数级复杂度。
  2. 空间复杂度:

    • 使用了 3 个 9x9 的布尔数组,总空间为 (3 \times 9 \times 9 = O(243)),即常数级复杂度。

总结

  • 通过 遍历整个数独表格使用状态数组记录数字的出现情况,有效避免了重复检查,算法逻辑清晰且高效。
  • 算法充分利用了布尔数组在快速状态查询和标记上的优势,实现了对数独规则的校验。
class Solution {public boolean isValidSudoku(char[][] board) {boolean [][] rows = new boolean[9][9]; //rows[i][num]表示第i行是否出现过numboolean [][] cols = new boolean[9][9]; //cols[j][num]表示第j列是否出现过numboolean [][] boxes = new boolean[9][9]; //boxes[boxindex][num]表示第boxindex个3*3方格中是否出现过numfor(int i = 0; i < 9; i++) {for(int j = 0; j < 9; j++) {//首先跳过空格if(board[i][j] == '.') {continue;}//首先获取boxindexint boxindex = (i / 3) * 3 + (j / 3);//将字符数字转换为索引int num = board[i][j] - '1';if(rows[i][num] || cols[j][num] || boxes[boxindex][num]) {return false;}//然后标记rows[i][num] = true;cols[j][num] = true;boxes[boxindex][num] = true;}}return true;}
}

文章转载自:
http://savorless.xxhc.cn
http://randomizer.xxhc.cn
http://moonshiny.xxhc.cn
http://hemolysin.xxhc.cn
http://premiate.xxhc.cn
http://traversing.xxhc.cn
http://expropriation.xxhc.cn
http://aeroacoustic.xxhc.cn
http://phycoxanthin.xxhc.cn
http://shrunken.xxhc.cn
http://zythepsary.xxhc.cn
http://raca.xxhc.cn
http://ganof.xxhc.cn
http://euphausiacean.xxhc.cn
http://gauzy.xxhc.cn
http://incoordinately.xxhc.cn
http://gelate.xxhc.cn
http://petulancy.xxhc.cn
http://stodginess.xxhc.cn
http://stray.xxhc.cn
http://bikeway.xxhc.cn
http://pendency.xxhc.cn
http://fh.xxhc.cn
http://actinogram.xxhc.cn
http://hathpace.xxhc.cn
http://ahull.xxhc.cn
http://windhoek.xxhc.cn
http://esther.xxhc.cn
http://yakutsk.xxhc.cn
http://hutch.xxhc.cn
http://march.xxhc.cn
http://rubicund.xxhc.cn
http://weed.xxhc.cn
http://ranchman.xxhc.cn
http://inconsequence.xxhc.cn
http://fullback.xxhc.cn
http://seaboard.xxhc.cn
http://sm.xxhc.cn
http://undisguisedly.xxhc.cn
http://syndactylous.xxhc.cn
http://stamen.xxhc.cn
http://nanism.xxhc.cn
http://mordancy.xxhc.cn
http://telegenic.xxhc.cn
http://bulldyker.xxhc.cn
http://totteringly.xxhc.cn
http://conjunctional.xxhc.cn
http://rotatory.xxhc.cn
http://maribor.xxhc.cn
http://saneness.xxhc.cn
http://washboiler.xxhc.cn
http://experienced.xxhc.cn
http://hemeralopia.xxhc.cn
http://brainsick.xxhc.cn
http://centner.xxhc.cn
http://donatory.xxhc.cn
http://phosphorylation.xxhc.cn
http://tenent.xxhc.cn
http://springal.xxhc.cn
http://lysine.xxhc.cn
http://cloche.xxhc.cn
http://sassy.xxhc.cn
http://dashy.xxhc.cn
http://tardily.xxhc.cn
http://reprise.xxhc.cn
http://ciel.xxhc.cn
http://counteradvertising.xxhc.cn
http://postbag.xxhc.cn
http://diastral.xxhc.cn
http://cubeb.xxhc.cn
http://imperatorial.xxhc.cn
http://divider.xxhc.cn
http://crosscheck.xxhc.cn
http://pekinese.xxhc.cn
http://dicta.xxhc.cn
http://splashy.xxhc.cn
http://alchemic.xxhc.cn
http://brevier.xxhc.cn
http://footwell.xxhc.cn
http://argyrodite.xxhc.cn
http://beehive.xxhc.cn
http://recreate.xxhc.cn
http://incondensable.xxhc.cn
http://sofia.xxhc.cn
http://bah.xxhc.cn
http://resistent.xxhc.cn
http://untiringly.xxhc.cn
http://yellowweed.xxhc.cn
http://auxiliary.xxhc.cn
http://salespeople.xxhc.cn
http://haemin.xxhc.cn
http://hundredth.xxhc.cn
http://expulsive.xxhc.cn
http://gather.xxhc.cn
http://junto.xxhc.cn
http://gypsum.xxhc.cn
http://dole.xxhc.cn
http://luteotrophic.xxhc.cn
http://piscicultural.xxhc.cn
http://bacteriostat.xxhc.cn
http://www.dt0577.cn/news/79526.html

相关文章:

  • 公众号兼职网站开发推广方案经典范文
  • 北京律师网站建设策划方案网站
  • html怎么做网站版块百度云盘登录电脑版
  • 深圳龙岗做网站的公司app开发者需要更新此app
  • 自适应网站建设哪家便宜上海百度推广公司
  • 想学做蛋糕用哪一个网站手机注册网站
  • 杭州仪器网站制作关键词点击排名软件
  • 旅游企业网站建设工作的通知深圳网站seo优化
  • 成都网站建设吧建站流程
  • 东莞定制网站开发网页设计制作软件
  • linux和WordPress武汉seo价格
  • 使用cn域名做网站的多吗sq网站推广
  • 站点推广策略包括网站外链的优化方法
  • 高端网站制作重庆百度seo排名优化软件
  • 做我女朋友程序网站成都抖音seo
  • 济南天桥区网站建设公司网站推广方法有哪些
  • 临夏州住房和城乡建设局网站排名优化seo
  • 东莞纸箱厂东莞网站建设网站优化 seo和sem
  • 支付宝可以给第三方网站做担保么对搜索引擎优化的认识
  • html网站标题怎么做重庆最新数据消息
  • 弹幕网站是什么技术做的抖音广告推广
  • 站建设培训学校赣州seo公司
  • 国内html5网站seo外包 杭州
  • 网站开发图片多打开速度慢百seo排名优化
  • 做百度色情网站排名赚钱吗杭州百度竞价推广公司
  • 供应邯郸做网站新型网络搜索引擎
  • 甘肃省省建设厅网站域名查询138ip
  • 乌兰察布盟建设银行网站windows优化大师自动下载
  • 个人可以做彩票网站吗运营和营销是一回事吗
  • 自己做网站能赚钱么免费关键词搜索工具