题目:有效的数独

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

1 数字 1-9 在每一行只能出现一次。
2 数字 1-9 在每一列只能出现一次。
3 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

上图是一个部分填充的有效的数独。
数独部分空格内已填入了数字,空白格用 ‘.’ 表示。

示例 1:

输入:
[["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"]
]
输出: true

示例 2:

输入:
[["8","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"]
]
输出: false

解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。
但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。
说明:
一个有效的数独(部分已被填充)不一定是可解的。
只需要根据以上规则,验证已经填入的数字是否有效即可。
给定数独序列只包含数字 1-9 和字符 ‘.’ 。
给定数独永远是 9x9 形式的。

代码实现:

bool isValidSudoku(char** board, int boardRowSize, int boardColSize) {int i, j, k; /* 判断每行数组中的值是否只出现一次 */for(k = 0; k < boardRowSize; k++){for(i = 0; i < boardColSize - 1; i++){for(j = i + 1; j < boardColSize; j++){if(board[k][i] == '.')break;else if(board[k][j] == '.')continue;else if(board[k][i] == board[k][j])return false;}}}/* 判断每列数组中的值是否只出现一次 */for(k = 0; k < boardColSize; k++){for(i = 0; i < boardRowSize - 1; i++){for(j = i + 1; j < boardRowSize; j++){if(board[i][k] == '.')break;else if(board[j][k] == '.')continue;else if(board[i][k] == board[j][k])return false;}}}/* 判断3x3矩阵中的值是否只出现一次 */int a = 0, b = 0, c = 0, d = 0;int row = 0, col = 0;int num;for(num = 0; num < 9; num++){for(a = row; a < 3 + row; a++){for(b = col; b < 3 + col; b++){/* 判断值为.,则判断下一个 */if(board[a][b] == '.'){continue;}/* 判断3x3矩阵是否有相等的值 */for(c = 0 + row;c < 3 + row; c++){for(d = 0 + col; d < 3 + col; d++){if(board[c][d] == '.')continue;else if((a != c) && (b != d) && (board[a][b] == board[c][d]))return false;}}}}/* 移动至下一个3x3矩阵 */col += 3;if(col >= 9){col = 0;row += 3;}}return true;
}

思考逻辑
1 先判断每行中的每个元素除了’.‘是否有相同的;
2 判断每列中的每个元素除了’.‘是否有相同的;
3 判断每一个3x3矩阵中除了’.'是否有相同的;
4 都不同则返回true,否则返回false;

Leetcode算法题(C语言)11--有效的数独相关推荐

  1. LeetCode算法题-Nth Digit(Java实现)

    这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...

  2. LeetCode算法题-Reverse Linked List(Java实现)

    这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...

  3. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)

    这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...

  4. leetcode算法题--完全平方数★

    原题链接:https://leetcode-cn.com/problems/perfect-squares/ 相关题目:leetcode算法题–零钱兑换 1.回溯法 就是暴力法,套路就是递归,但是有很 ...

  5. LeetCode算法题-Minimum Depth of Binary Tree(Java实现)

    这是悦乐书的第168次更新,第170篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第27题(顺位题号是111).给定二叉树,找到它的最小深度.最小深度是沿从根节点到最近的 ...

  6. LeetCode算法题-Valid Palindrome II(Java实现)

    这是悦乐书的第287次更新,第304篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第155题(顺位题号是680).给定非空字符串s,最多可以删除一个字符. 判断它是否是回 ...

  7. LeetCode算法题-K-diff Pairs in an Array(Java实现)

    这是悦乐书的第254次更新,第267篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第121题(顺位题号是532).给定一个整数数组和一个整数k,您需要找到数组中唯一的k- ...

  8. LeetCode算法题-Jewels and Stones(Java实现)

    这是悦乐书的第313次更新,第334篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第182题(顺位题号是771).字符串J代表珠宝,S代表你拥有的石头.S中的每个字符都是 ...

  9. LeetCode算法题-Repeated String Match(Java实现)

    这是悦乐书的第289次更新,第307篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第156题(顺位题号是686).给定两个字符串A和B,找到A必须重复的最小次数,使得B是 ...

  10. LeetCode算法题-Factorial Trailing Zeroes(Java实现)

    这是悦乐书的第183次更新,第185篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第42题(顺位题号是172).给定一个整数n,返回n!中的尾随零数.例如: 输入:3 输 ...

最新文章

  1. 9月第1周安全回顾 IM安全威胁严重 企业增加无线安全投入
  2. Gson:我爸是 Google
  3. python基于tpot训练模型在获得最佳模型之后对模型进行交叉验证分析并可视化实战
  4. 查看mysql版本不一致_MySQL-版本不一致
  5. Py之basemap:python库之basemap的简介、安装、使用方法之详细攻略
  6. libusb usb设备访问接口库
  7. Java千万数据导入mysql_java之5分钟插入千万条数据
  8. 11(AtCoder-2649)
  9. ajax jsonjar包,json-lib.jar
  10. 实验2 格式化输入输出和分支语句
  11. 通俗易懂的极限学习机(Extreme Learning Machine)
  12. 贴片电阻电容标称换算
  13. ad中使用智能粘贴_ADAS/AD专题1万字讲透量产智能驾驶系统方案
  14. ARC093 F - Dark Horse
  15. 在vue项目中使用高德地图JS API
  16. 吴恩达深度学习课程值不值得学?四晚学完的高手给你建议
  17. ESP32学习:AD/DA数模转换
  18. NYOJ - 非洲小孩(贪心)
  19. 第九篇:强化学习Q-learning算法 通俗介绍
  20. python爬取拼多多爆款数据_利用风变Python快速爬取海量数据,写出10万+爆文

热门文章

  1. 浅谈OpenGL、OpenGL ES
  2. 机器学习--逻辑斯谛回归(Logistic Regression)
  3. AMD、CMD、CommonJs、ES6的对比
  4. phpcmsV9正常安装后,后台管理员不存在? phpmyadmin无法打开?
  5. phpcms首页:调用全站所有tags关键字 - tags总结篇
  6. phpcmsV9视频模块开发——盛大游戏通行证注册与密码找回
  7. 好看好用的花前月下网易云等级代挂程序(支持扫码登录)
  8. 仿QQ打开网址显示的当前网页非官方页面
  9. mysql innoback_innobackex工具备份mysql数据
  10. tensorflow 转张量类型为float_TensorFlow是什么?怎么用?终于有人讲明白了