日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

36有效的数独

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 36有效的数独 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。
//
// 數字 1-9 在每一行只能出現一次。
// 數字 1-9 在每一列只能出現一次。
// 數字 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 形式的。
//
// Related Topics 哈希表

  • 思路1:兩層循環判斷,判斷每一個元素是否合法
class Solution {public boolean isValidSudoku(char[][] board) {if (board == null || board.length == 0) return false;return solve(board);}public boolean solve(char[][] board) {// board.length為數獨的行數,二維數組的長度和一維數組一樣,只不過每個元素都是一個數組for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {if (board[i][j] != '.') { // 如果沒有填入數字(char是基本類型,用==比較)if (!isValid(board, i, j, board[i][j])) {return false;}}}}return true;}//判斷當前row-col的元素是否合法private boolean isValid(char[][] board, int row, int col, char c) {for (int i = 0; i < 9; i++) {if (board[i][col] != '.' && i != row && board[i][col] == c) return false; // 看看當前行中有沒有與c重復的,i != row用來排除本身if (board[row][i] != '.' && i != col && board[row][i] == c) return false; // 看看當前列中有沒有與c重復的,i != col用來排除本身if (board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] != '.' && (3 * (row / 3) + i / 3) != row && (3 * (col / 3) + i % 3) != col && board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] == c)return false;//看看當前3*3中有沒有與c重復的,(3 * (row / 3) + i / 3) != row && (3 * (col / 3) + i % 3) != col用來排除自身, 3 * (row / 3)// 和3 *(col / 3)可以計算出當前row,col所在的九宮格的左上角的坐標,i/3可以每三個固定行,i%3 列向前遍歷}return true;} }

總結

以上是生活随笔為你收集整理的36有效的数独的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。