每日5题Day11 - LeetCode 51 - 55

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:51. N 皇后 - 力扣(LeetCode)

class Solution {
    public List<List<String>> solveNQueens(int n) {
        List<List<String>> res = new ArrayList<>();
        char[][] matrix = new char[n][n];
        //全部赋值为'.'
        for(char[] row : matrix){
            Arrays.fill(row, '.');
        }
        traversal(0, n, matrix, res);
        return res;
    }

    private static void traversal(int row, int n, char[][] matrix, List<List<String>> res){
        //行数到了,可以放入结果了
        if(row == n){
            res.add(array2list(matrix));
            return;
        }
        for(int col = 0; col < n; col++){
            if(isValid(row, col, n, matrix)){
                matrix[row][col] = 'Q';
                traversal(row + 1, n, matrix, res);
                matrix[row][col] = '.';
            }
        }
    }
    
    private static List array2list(char[][] matrix){
        //结果要字符串
        List<String> path = new ArrayList<>();
        for(char[] c : matrix){
            path.add(String.valueOf(c));
        }
        return path;
    }
    private static boolean isValid(int row, int col, int n, char[][] matrix){
        //从三个纬度来验证是否符合
        for(int i = 0; i < row; i++){
            if(matrix[i][col] == 'Q'){
                return false;
            }
        }
        for(int i = row - 1, j = col - 1; i >=0 && j >= 0; i--, j--){
            if(matrix[i][j] == 'Q'){
                return false;
            }
        }
        for(int i = row - 1, j = col + 1; i >= 0 && j <= n - 1; i--, j++){
            if(matrix[i][j] == 'Q'){
                return false;
            }
        }
        return true;
    }
}

第二题:52. N 皇后 II - 力扣(LeetCode)

class Solution {
    public int totalNQueens(int n) {
        //注意使用数组来存储
        int[] res = new int[1];
        res[0] = 0;
        int[][] matrix = new int[n][n];
        for(int[] c : matrix){
            Arrays.fill(c, 0);
        }
        traversal(0, n, matrix, res);
        return res[0];
    }

    private static void traversal(int row, int n, int[][] matrix, int[] res){
        if(row == n){
            res[0]++;
            return;
        }
        for(int col = 0; col < n; col++){
            if(isValid(row, col, n, matrix)){
                matrix[row][col] = 1;
                traversal(row + 1, n, matrix, res);
                matrix[row][col] = 0;
            }
        }
    }

    private static boolean isValid(int row, int col, int n, int[][] matrix){
    //和上一题一样也是三个纬度
        for(int i = 0; i < n; i++){
            if(matrix[i][col] == 1){
                return false;
            }
        }
        for(int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--){
            if(matrix[i][j] == 1){
                return false;
            }
        }
        for(int i = row - 1, j = col + 1; i >= 0 && j <= n - 1; i--, j++){
            if(matrix[i][j] == 1){
                return false;
            }
        }
        return true;
    }
}

第三题:53. 最大子数组和 - 力扣(LeetCode)

class Solution {
    public int maxSubArray(int[] nums) {
        int n = nums.length;
        if(n == 1){
            return nums[0];
        }
        //直接使用dp来完成
        int[] dp = new int[n];
        dp[0] = nums[0];
        int maxsum = dp[0];
        for(int i = 1; i < n; i++){
            //注意这个状态转移方程
            dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
            maxsum = Math.max(maxsum, dp[i]);
        }
        return maxsum;
    }
}

第四题:54. 螺旋矩阵 - 力扣(LeetCode)

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        //老题目了 四个方向换着来呗
        int m = matrix.length, n = matrix[0].length;
        if(m == 0 || n == 0){
            return new ArrayList<>();
        }
        List<Integer> res = new ArrayList<>();
        int l = 0, r = n - 1, t = 0, b = m - 1, index = 0;
        while(index < m * n){
            for(int i = l; i <= r && index < m * n; i++){
                res.add(matrix[t][i]);
                index++;
            }
            t++;
            for(int i = t; i <= b && index < m * n; i++){
                res.add(matrix[i][r]);
                index++;
            }
            r--;
            for(int i = r; i >= l && index < m * n; i--){
                res.add(matrix[b][i]);
                index++;
            }
            b--;
            for(int i = b; i >= t && index < m * n; i--){
                res.add(matrix[i][l]);
                index++;
            }
            l++;
        }
        return res;
    }
}

 第五题:55. 跳跃游戏 - 力扣(LeetCode)

class Solution {
    public boolean canJump(int[] nums) {
        //直接一个贪心过去
        int max_len = nums[0];
        for(int i = 0; i < nums.length; i++){
            if(i <= max_len){
                max_len = Math.max(max_len, i + nums[i]);
            }else{
                break;
            }
        }
        return max_len >= nums.length - 1 ? true : false;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/649752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭秘订单排队模式:社交电商新策略

随着移动互联网的蓬勃发展&#xff0c;社交电商正以其独特的魅力席卷全球。据权威机构预测&#xff0c;到2024年&#xff0c;全球社交电商市场规模有望达到惊人的2.8万亿美元。面对如此庞大的市场蛋糕&#xff0c;如何精准把握机遇&#xff0c;实现业务的跨越式增长&#xff0c…

SQL157 平均播放进度大于60%的视频类别

描述 用户-视频互动表tb_user_video_log iduidvideo_idstart_timeend_timeif_followif_likeif_retweetcomment_id110120012021-10-01 10:00:002021-10-01 10:00:30011NULL210220012021-10-01 10:00:002021-10-01 10:00:21001NULL310320012021-10-01 11:00:502021-10-01 11:01…

强大的医院绩效考核管理系统源码,支持行业内所有绩效方案,且每步核算都可自主进行方案的新建、调整。

医院绩效考核管理系统是采用B/S架构模式设计、使用JAVA语言开发、后台使用MySql数据库进行管理的一整套计算机应用软件源码。 系统和his系统进行对接&#xff0c;按照设定周期&#xff0c;从his系统获取医院科室和医生、护士、其他人员工作量&#xff0c;对没有录入信息化系统…

定时调度任务——kettle开发22

一、流查询 流查询在查询前把数据加载到内存中&#xff0c;并且只能进行等值查询。 流查询的操作包括指定数据源&#xff0c;即我们将数据进行流查询的数据源头&#xff0c;如下图所示流查询的数据源是我们的Excel输入-departments&#xff0c;然后我们还需要指定我们进行流查…

手机远程协助,3个方法,开启沟通新篇章

已经不仅仅是一个通讯工具&#xff0c;更是一个多功能的魔法棒。它轻轻一挥&#xff0c;就能让我们跨越千山万水&#xff0c;与亲朋好友、合作伙伴进行亲密无间的交流。今天&#xff0c;就让我们一起探讨如何利用手机远程协助的三大法宝&#xff0c;开启沟通的新篇章&#xff0…

二叉树——堆的实现

一.前言 前面我们讲解了二叉树的概念以及二叉树的存储结构&#xff1a;https://blog.csdn.net/yiqingaa/article/details/139224974?spm1001.2014.3001.5502 今天我们主要讲讲二叉树的存储结构&#xff0c;以及堆的实现。 二.正文 1.二叉树的顺序结构及实现 1.1二叉树的顺序…

手动操作很麻烦?试试这个自动加好友神器吧!

你是不是也觉得手动逐一输入号码或是微信号&#xff0c;再搜索添加很麻烦&#xff1f;试试这个自动加好友神器——个微管理系统&#xff0c;帮助你省去繁琐的手工操作&#xff0c;节省时间和精力。 首先&#xff0c;在系统上登录微信号&#xff0c;无论你有多少个微信号&#…

服务器重装系统与磁盘操作

诱因&#xff1a;服务器原来装的EXSI&#xff0c;现在要重装一个ubuntu server&#xff0c;出现了下面一些问题&#xff0c;在此记录一下。 目录 1、过程中出现的问题&#xff08;2024.5.26&#xff09;1.1 问题1&#xff1a;如何磨掉原来的ESXI&#xff1f;1.2 问题2&#xf…

【Typescript】通过变量的值即可获取变量的类型【typeof 变量】

注意&#xff1a;只要变量的类型准确,则typeof获取变量的类型就不会错 enum Test {a "a0",b "b0" }// 这里的a是一个变量的值 let a: Test.a "a0" as Test.a// 这里的typeof a是一个类型【Test.a】 let x: typeof a Test.a

玩转香橙派 AIpro,高性能AI开发板评测与项目案例分享

公司最近刚忙完一个项目&#xff0c;闲暇之余&#xff0c;看着手里的树莓派、stm32、Esp32又有些手痒了&#xff0c;准备再搞点小项目出来&#xff0c;但一直没有什么好想法。 说来也巧&#xff0c;恰好收到了CSDN官方的OrangePi AIpro测评活动&#xff0c;平时一直都在用树莓…

matplotlib---气泡图

气泡图简介&#xff1a; 气泡图&#xff08;Bubble Chart&#xff09;是一种数据可视化图形&#xff0c;主要用于展示多个数据点之间的关系。 气泡图通过气泡的大小&#xff0c;位置和颜色可以展示数据之间的关系。在气泡图中&#xff0c;横轴和纵轴通常表示数据的两个维度&a…

NoSQL Redis配置与优化

一、关系数据库与非关系型数据库 1. 关系型数据库&#xff1a; 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型…

3d火灾救援模拟仿真培训软件复用性强

消防VR安全逃生体验系统是深圳VR公司华锐视点引入了前沿的VR虚拟现实、web3d开发和多媒体交互技术&#xff0c;为用户打造了一个逼真的火灾现场应急逃生模拟演练环境。 相比传统的消防逃生模拟演练&#xff0c;消防VR安全逃生体验系统包含知识讲解和模拟实训演练&#xff0c;体…

(2024,基于熵的激活函数动态优化,具有边界条件的最差激活函数,修正正则化 ReLU)寻找更优激活函数

A Method on Searching Better Activation Functions 公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 动机 4. 方法论 4.1 问题设定 4.1.1 贝叶斯错误率和信息熵 4.1.2 激活…

物业

用户报修 审核专员可以操作&#xff08;前端&#xff09;&#x1f197; 工程部可以看到不可以操作&#xff08;前端&#xff09;&#x1f197; 项目经理可以看到不可以操作&#xff08;前端&#xff09;&#x1f197; 经理可以看到不可以操作&#xff08;前端&#xff09;&…

Kivy 项目51斩百词 6 播放读音

为了给小喇叭图像绑定点击事件&#xff0c;实现当用户点击按钮时&#xff0c;触发该事件对应的回调方法。 在方法内对于不同的系统Kivy使用不同的播放语音方法&#xff0c; 对于Windows系统 使用SoundLoader播放语音&#xff0c; 对于其他的Unix系统 使用Pyjnjus播放…

C语言 数组——排序算法的函数实现

目录 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序 交换法排序 用交换法对成绩数组升序排序 选择法排序 冒泡法排序 归并法排序

拼多多商品详情商品标题sku等信息抓取接口API调用步骤演示

接口名称&#xff1a;item_get_app_pro 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_sho…

区块链技术引领:Web3时代的新网络革命

随着区块链技术的快速发展和不断成熟&#xff0c;人们已经开始意识到它所带来的潜在影响&#xff0c;尤其是在构建一个更加去中心化、安全和透明的互联网时。这个新的互联网时代被称为Web3&#xff0c;它将不再受制于传统的中心化平台&#xff0c;而是更多地依赖于去中心化的网…