力扣-51.N皇后

题目链接

51.N皇后

java 复制代码
class Solution {
    List<List<String>> res = new ArrayList<>();
    List<String> path = new ArrayList<>();

    void backtracking(char[][] board, int n, int row) {
        if (row >= n) {
            res.add(new ArrayList<>(path));
            return;
        }
        // 尝试在当前行的每一列放置皇后
        for (int col = 0; col < n; col++) {
            if (isValid(board, row, col, n)) {
                board[row][col] = 'Q';
                path.add(new String(board[row]));
                backtracking(board, n, row + 1);
                board[row][col] = '.';
                path.remove(path.size() - 1);
            }
        }
    }

    public boolean isValid(char[][] board, int row, int col, int n) {
        // 检查同列是否有皇后,因为按行插入同行不会有
        for (int i = 0; i < n; i++) {
            if (board[i][col] == 'Q') {
                return false;
            }
        }
        // 检查右上斜线
        for (int i = row, j = col; i >= 0 && j < n; i--, j++) {
            if (board[i][j] == 'Q')
                return false;
        }
        // 检查左上斜线
        for (int i = row, j = col; i >= 0 && j >= 0; i--, j--) {
            if (board[i][j] == 'Q')
                return false;
        }
        return true;
    }

    public List<List<String>> solveNQueens(int n) {
        char[][] board = new char[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                board[i][j] = '.';
            }
        }
        backtracking(board, n, 0);
        return res;
    }
}

小结:初始化棋盘,按行递归处理,确保每行只有一个皇后,之后尝试在当前行的每一列放置皇后。

Java字符数组转字符串

  1. 使用 String 构造函数
java 复制代码
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str = new String(charArray); // "Hello"
  1. 使用 String.valueOf()
java 复制代码
char[] charArray = {'W', 'o', 'r', 'l', 'd'};
String str = String.valueOf(charArray);  // "World"
相关推荐
美团技术团队1 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC18 小时前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC19 小时前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK20 小时前
线段树维护区间 k 次方和
c++·数学·算法·stl
_清歌1 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局1 天前
SVD 的三步走:双对角化、Givens 收敛、排序
算法
躬行见万象1 天前
《VLA 系列》UniLab 强化训练 | G1 机器人 |复现
算法
统计实现局1 天前
对称不定分解(Bunch-Kaufman):为什么 Cholesky 不够用
算法
统计实现局1 天前
dqrsl 拆解:拿着 QR 结果能算出哪 5 种东西
算法