力扣-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"
相关推荐
Evand J11 小时前
【MATLAB代码介绍】基于累积概率的三维轨迹匹配与定位,由轨迹匹配和卡尔曼滤波形成算法,带测试结果演示
算法·matlab·滤波·定位·导航·轨迹匹配
l1t11 小时前
NineData第三届数据库编程大赛:用一条 SQL 解数独问题我的参赛程序
数据库·人工智能·sql·算法·postgresql·oracle·数独
千金裘换酒12 小时前
LeetCode 链表两数相加
算法·leetcode·链表
NAGNIP12 小时前
一文搞懂机器学习中的优化方法!
算法
Sammyyyyy12 小时前
Rust 1.92.0 发布:Never Type 进一步稳定
java·算法·rust
alonewolf_9912 小时前
深入解析G1与ZGC垃圾收集器:原理、调优与选型指南
java·jvm·算法
数据大魔方13 小时前
【期货量化实战】螺纹钢量化交易指南:品种特性与策略实战(TqSdk完整方案)
python·算法·github·程序员创富·期货程序化·期货量化·交易策略实战
独自破碎E13 小时前
二分查找-I
leetcode
千金裘换酒13 小时前
LeetCode 删除链表的倒数第N个结点
算法·leetcode
SweetCode13 小时前
【无标题】
开发语言·c++·算法