leetcode每日一题(20241202)

leetcode每日一题(20241202)

52 N 皇后 题目描述:

bash 复制代码
n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。

n皇后问题,之前看过一个软考的讲的很清晰,就是放一个然后就去和之前的已经放好的皇后位置去挨个比较当前放的这个皇后位置是否合法,直到放完所有的棋牌。

java 复制代码
class Solution {
    public int totalNQueens(int n) {
        int[] pre=new int[n+1];
        int count=0;
        int j=1;
        while(j>=1){
            do{
            // 从棋盘的第一个开始试探方知皇后
                pre[j]=pre[j]+1;
            }while(pre[j]<=n&&!check(pre,j));
            if(pre[j]<=n){
                if(j==n){
                    count++;
                }else{
                    j++;
                }

            }else{
                pre[j]=0;
                j--;
            }
        }
        return count;
    }
    // 检测当前位置是否和之前的已经放的皇后位置发生冲突
    public boolean check(int[] pre,int j){
        for(int i=1;i<j;i++){
            if(pre[i]==pre[j]||Math.abs(i-j)==Math.abs(pre[i]-pre[j])){
                return false;
            }
        }
        return true;
    }
}

加油!!!好久没写了。

相关推荐
砍材农夫1 小时前
使用jstack排查死锁,面试考点
java
0xDevNull7 小时前
Java反射机制深度解析:从原理到实战
java·开发语言·后端
华科易迅7 小时前
MybatisPlus增删改查操作
android·java·数据库
standovon8 小时前
Spring Boot整合Redisson的两种方式
java·spring boot·后端
米粒18 小时前
力扣算法刷题 Day 27
算法·leetcode·职场和发展
IAUTOMOBILE8 小时前
Python 流程控制与函数定义:从调试现场到工程实践
java·前端·python
hutengyi8 小时前
PostgreSQL版本选择
java
皮皮林5519 小时前
重磅!JetBrains 正式发布全新的 AI 开发工具,定名 AI IDE AIR
java·intellij idea
MX_93599 小时前
SpringMVC请求参数
java·后端·spring·servlet·apache
ID_180079054739 小时前
小红书笔记评论 API,Python 调用示例与完整 JSON 返回参考
java·开发语言