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 分钟前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
Beginner x_u9 分钟前
链表专题:JS 实现原理与高频算法题总结
javascript·算法·链表
直奔標竿36 分钟前
Java开发者AI转型第二十七课!Spring AI 个人知识库实战(六)——全栈闭环收官,解锁前端流式渲染终极技巧
java·开发语言·前端·人工智能·后端·spring
金銀銅鐵1 小时前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
野生技术架构师3 小时前
金三银四面试总结篇,汇总 Java 面试突击班后的面试小册
java·面试·职场和发展
_深海凉_3 小时前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
小袁拒绝摆烂3 小时前
多表关联大平层转JSON树形结构
java·json
ja哇4 小时前
大厂面试高频八股
java·面试·职场和发展
踩坑记录4 小时前
leetcode hot100 寻找两个正序数组的中位数 hard 二分查找 双指针
leetcode