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;
    }
}

加油!!!好久没写了。

相关推荐
二哈赛车手7 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
吃好睡好便好8 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
栗子~~8 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
YDS8298 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
仰泳之鹅8 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
未若君雅裁9 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
AI人工智能+电脑小能手10 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
阿维的博客日记10 小时前
Nacos 为什么能让配置动态生效?(涉及 @RefreshScope 注解)
java·spring
雨辰AI10 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
x_yeyue11 小时前
三角形数
笔记·算法·数论·组合数学