力扣-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"
相关推荐
8Qi85 小时前
LeetCode 75:颜色分类(荷兰国旗问题)—— Java 题解 ✅
java·算法·leetcode·指针·排序
888CC++7 小时前
如何在 C 语言中进行程序调试?
前端·javascript·算法
(●—●)橘子……8 小时前
力扣第503场周赛练习理解
python·学习·算法·leetcode·职场和发展·周赛
明志数科10 小时前
4D时序标注技术详解:让机器人理解连续动作的数据基础
java·算法·机器人
KaMeidebaby10 小时前
卡梅德生物技术快报|原核表达系统工艺优化:包涵体重折叠 + 分子筛纯化实现功能 RBD 高效制备,附全参数配置
前端·人工智能·算法·数据挖掘·数据分析
无限码力10 小时前
携程0510笔试真题【单数组交换】
算法·携程笔试·携程笔试真题·携程0510笔试真题
BlockWay11 小时前
WEEX Labs 周度观察:微软-OpenAI 合作调整与AI 多云趋势
大数据·人工智能·算法·安全·microsoft
风筝在晴天搁浅11 小时前
快手 CodeTop LeetCode 224.基本计算器
数据结构·算法·leetcode
Smoothcloud润云11 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text