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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)

發(fā)布時(shí)間:2024/2/28 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

36. Valid Sudoku

https://leetcode.com/problems/valid-sudoku/

題解

class Solution {public boolean isValidSudoku(char[][] board) {boolean[][] rows = new boolean[9][9];boolean[][] cols = new boolean[9][9];boolean[][] grids = new boolean[9][9];for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (board[i][j] == '.') continue;int n = board[i][j] - '1';int g = 3 * (i / 3) + (j / 3);if (rows[i][n] || cols[j][n] || grids[g][n]) return false;rows[i][n] = true;cols[j][n] = true;grids[g][n] = true;}}return true;} }

37. Sudoku Solver

https://leetcode.com/problems/sudoku-solver/

題解

思路是:暴力 DFS 無(wú)任何記憶,每走到下一個(gè)空閑格子,遍歷放進(jìn) 1 ~ 9 看是否可行。如果 1 ~ 9 都不行,回溯返回上一級(jí)。

class Solution {public void solveSudoku(char[][] board) {boolean[][] rows = new boolean[9][9];boolean[][] cols = new boolean[9][9];boolean[][] grids = new boolean[9][9];int filled = 0;for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (board[i][j] != '.') {int n = board[i][j] - '1';int g = 3 * (i / 3) + (j / 3);rows[i][n] = true;cols[j][n] = true;grids[g][n] = true;filled++;}}}for (int i = 0; i < 9; i++) {for (int j = 0; j < 9; j++) {if (board[i][j] == '.') {for (int num = 1; num <= 9; num++) {if (tryFill(board, i, j, num, rows, cols, grids, filled)) return;}}}}}public boolean tryFill(char[][] board, int i, int j, int value, boolean[][] rows, boolean[][] cols, boolean[][] grids, int filled) {int n = value - 1;int g = 3 * (i / 3) + (j / 3); // 九宮格的indexif (rows[i][n] || cols[j][n] || grids[g][n]) { // 當(dāng)前數(shù)字沖突return false;} else { // 當(dāng)前數(shù)字有效board[i][j] = (char) ('0' + value);rows[i][n] = true;cols[j][n] = true;grids[g][n] = true;if (++filled == 9 * 9) return true;// 填充下一個(gè)位置for (int ii = 0; ii < 9; ii++) {for (int jj = 0; jj < 9; jj++) {if (board[ii][jj] == '.') { // 首個(gè)下一個(gè)位置for (int v = 1; v <= 9; v++) {if (tryFill(board, ii, jj, v, rows, cols, grids, filled)) return true;}// value=1~9都不能填充下一個(gè)位置,直接返回board[i][j] = '.';rows[i][n] = false;cols[j][n] = false;grids[g][n] = false;return false;}}}}return false;} }

總結(jié)

以上是生活随笔為你收集整理的leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。