Golang | Leetcode Golang题解之第52题N皇后II

题目:

题解:

Go 复制代码
func totalNQueens(n int) (ans int) {
    columns := make([]bool, n)        // 列上是否有皇后
    diagonals1 := make([]bool, 2*n-1) // 左上到右下是否有皇后
    diagonals2 := make([]bool, 2*n-1) // 右上到左下是否有皇后
    var backtrack func(int)
    backtrack = func(row int) {
        if row == n {
            ans++
            return
        }
        for col, hasQueen := range columns {
            d1, d2 := row+n-1-col, row+col
            if hasQueen || diagonals1[d1] || diagonals2[d2] {
                continue
            }
            columns[col] = true
            diagonals1[d1] = true
            diagonals2[d2] = true
            backtrack(row + 1)
            columns[col] = false
            diagonals1[d1] = false
            diagonals2[d2] = false
        }
    }
    backtrack(0)
    return
}
相关推荐
期末考复习中,蓝桥杯都没时间学了9 小时前
力扣刷题19
算法·leetcode·职场和发展
桂花很香,旭很美10 小时前
[7天实战入门Go语言后端] Day 2:用 Go 写一个 HTTP 服务——net/http 入门
http·golang·xcode
踩坑记录10 小时前
递归回溯本质
leetcode
好学且牛逼的马11 小时前
【Hot100|25-LeetCode 142. 环形链表 II - 完整解法详解】
算法·leetcode·链表
样例过了就是过了13 小时前
LeetCode热题100 和为 K 的子数组
数据结构·算法·leetcode
Frostnova丶13 小时前
LeetCode 67. 二进制求和
算法·leetcode
昌兵鼠鼠13 小时前
LeetCode Hot100 哈希
学习·算法·leetcode·哈希算法
脏脏a13 小时前
【优选算法・双指针】以 O (n) 复杂度重构数组操作:从暴力遍历到线性高效的范式跃迁
算法·leetcode·双指针·牛客·优选算法
kamisama_zhu13 小时前
LeetCode 热题100快速通关指南(附模板) (优化完整版,真人心得版,持续更新)
算法·leetcode·职场和发展
蒟蒻小袁15 小时前
力扣hot-100(一刷自用版)
leetcode·哈希算法·散列表