mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 11:34:46 +08:00
0037.解数独:优化排版,补充Swift版本
This commit is contained in:
@ -61,7 +61,7 @@
|
|||||||
|
|
||||||
代码如下:
|
代码如下:
|
||||||
|
|
||||||
```
|
```cpp
|
||||||
bool backtracking(vector<vector<char>>& board)
|
bool backtracking(vector<vector<char>>& board)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -504,5 +504,54 @@ void solveSudoku(char** board, int boardSize, int* boardColSize) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Swift
|
||||||
|
|
||||||
|
```swift
|
||||||
|
func solveSudoku(_ board: inout [[Character]]) {
|
||||||
|
// 判断对应格子的值是否合法
|
||||||
|
func isValid(row: Int, col: Int, val: Character) -> Bool {
|
||||||
|
// 行中是否重复
|
||||||
|
for i in 0 ..< 9 {
|
||||||
|
if board[row][i] == val { return false }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列中是否重复
|
||||||
|
for j in 0 ..< 9 {
|
||||||
|
if board[j][col] == val { return false }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 9方格内是否重复
|
||||||
|
let startRow = row / 3 * 3
|
||||||
|
let startCol = col / 3 * 3
|
||||||
|
for i in startRow ..< startRow + 3 {
|
||||||
|
for j in startCol ..< startCol + 3 {
|
||||||
|
if board[i][j] == val { return false }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
@discardableResult
|
||||||
|
func backtracking() -> Bool {
|
||||||
|
for i in 0 ..< board.count { // i:行坐标
|
||||||
|
for j in 0 ..< board[0].count { // j:列坐标
|
||||||
|
guard board[i][j] == "." else { continue } // 跳过已填写格子
|
||||||
|
// 填写格子
|
||||||
|
for val in 1 ... 9 {
|
||||||
|
let charVal = Character("\(val)")
|
||||||
|
guard isValid(row: i, col: j, val: charVal) else { continue } // 跳过不合法的
|
||||||
|
board[i][j] = charVal // 填写
|
||||||
|
if backtracking() { return true }
|
||||||
|
board[i][j] = "." // 回溯:擦除
|
||||||
|
}
|
||||||
|
return false // 遍历完数字都不行
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true // 没有不合法的,填写正确
|
||||||
|
}
|
||||||
|
backtracking()
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
Reference in New Issue
Block a user