每日5题Day9 - LeetCode 41 - 45

news2024/11/20 10:28:34

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

第一题:41. 缺失的第一个正数 - 力扣(LeetCode)

今天这道题没有ac,写不动了,下次再通过吧,先给个半成品下次回来改掉

class Solution {
    public int firstMissingPositive(int[] nums) {
        //使用掩码来做吧,通过$与|来记录一下各个数是否有出现
        int mask = 0;
        int n = nums.length;
        // 将正整数放置到对应的位置
        for (int num : nums) {
            if (num > 0 && num <= n) {
                mask |= (1 << (num - 1));
            }
        }
        // 找到第一个缺失的正整数
        for (int i = 0; i < n; i++) {
            if ((mask & (1 << i)) == 0) {
                return i + 1;
            }
        }
        // 如果数组中包含了1到n之间的所有正整数,则缺失的是n+1
        return n + 1;
    }
}


第二题:42. 接雨水 - 力扣(LeetCode)

class Solution {
    public int trap(int[] height) {
        //单调站的传统题
        Deque<Integer> deque = new ArrayDeque<>();
        int res = 0;
        for(int i = 0; i < height.length; i++){
            while(!deque.isEmpty() && height[i] > height[deque.peekLast()]){
                int tmp = deque.pollLast();
                if(!deque.isEmpty()){
                    //注意宽和高是如何得到的
                    int h = Math.min(height[deque.peekLast()], height[i]) - height[tmp];
                    int w = i - deque.peekLast() - 1;
                    res += h * w;
                }
            }
            deque.offerLast(i);
        }
        return res;
    }
}

第三题:43. 字符串相乘 - 力扣(LeetCode)

class Solution {
    public String multiply(String num1, String num2) {
        //直接模拟就好
        int m = num1.length();
        int n = num2.length();
        int[] result = new int[m + n]; // 保存每一位的乘积结果
        // 逐位相乘,注意从个位加至高位
        for (int i = m - 1; i >= 0; i--) {
            for (int j = n - 1; j >= 0; j--) {
                int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0'); // 乘积
                int sum = mul + result[i + j + 1]; // 加上当前位的值
                result[i + j] += sum / 10; // 进位
                result[i + j + 1] = sum % 10; // 当前位的结果
            }
        }
        // 将结果数组转换为字符串
        StringBuilder sb = new StringBuilder();
        for (int digit : result) {
            if (!(sb.length() == 0 && digit == 0)) { // 忽略结果数组的前导零
                sb.append(digit);
            }
        }
        return sb.length() == 0 ? "0" : sb.toString();
    }
}

第四题:44. 通配符匹配 - 力扣(LeetCode)

本题借用:【宫水三叶】的思路来解决的

class Solution {
    public boolean isMatch(String ss, String pp) {
        int n = ss.length(), m = pp.length();
        // 技巧:往原字符头部插入空格,这样得到 char 数组是从 1 开始,而且可以使得 f[0][0] = true,可以将 true 这个结果滚动下去
        ss = " " + ss;
        pp = " " + pp;
        char[] s = ss.toCharArray();
        char[] p = pp.toCharArray();
        // f(i,j) 代表考虑 s 中的 1~i 字符和 p 中的 1~j 字符 是否匹配
        boolean[][] f = new boolean[n + 1][m + 1];
        f[0][0] = true;
        for (int i = 0; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if (p[j] == '*') {
                    //注意这个地方逻辑的判断:
                    //条件一:不加'*'时的情况:f[i][j - 1]
                    //条件二:(i - 1 >= 0 && f[i - 1][j])
                    //满足其一即可为true
                    f[i][j] = f[i][j - 1] || (i - 1 >= 0 && f[i - 1][j]);
                } else {
                    //当字符为'?'时的判断逻辑,肯定要前面也满足true
                    f[i][j] = i - 1 >= 0 && f[i - 1][j - 1] && (s[i] == p[j] || p[j] == '?');
                }
            }
        }
        return f[n][m];
    }
}

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

class Solution {
    public int jump(int[] nums) {
        //不dp了,可以直接贪心策略实现,少用点空间
        if(nums.length == 0 || nums.length == 1){
            return 0;
        }
        int cnt = 0, curlen = 0, maxlen = 0;
        for(int i = 0; i < nums.length; i++){
            maxlen = Math.max(maxlen, i + nums[i]);
            if(maxlen >= nums.length - 1){
                cnt++;
                break;
            }
            if(i == curlen){
                curlen = maxlen;
                cnt++;
            }
        }
        return cnt;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

装备制造项目管理软件:奥博思PowerProject项目管理系统

数字化正逐步改变着制造方式和企业组织模式。某制造企业领导层透露&#xff0c;在采用数字化项目管理模式后&#xff0c;企业的发展韧性更加强劲&#xff0c;构筑起了竞争新优势&#xff0c;企业产品研制周期缩短25%&#xff0c;生产效率提升18%。 随着全球经济的发展&#xf…

【Linux001】centos常用命令总结总结(已更新)

1.熟悉、梳理、总结下centos知识体系。 2.Linux相关知识&#xff0c;在日常开发中必不可少&#xff0c;如一些必知必会的常用命令&#xff0c;如环境搭建、应用部署等。同时&#xff0c;也要谨慎使用一些命令&#xff0c;如rm -rf&#xff0c;防止一些生产事故的发生。 3.欢迎点…

521源码-区块链交易所-二开版多语言秒合约交易所系统/区块链交易所系统/完整脚本任务/附带搭建教程

交易只保留秒合约交易&#xff0c;完整的计划执行脚本&#xff0c;秒合约订单完美结算&#xff0c;效果看图片 搭建非常简单&#xff0c;功能不多叙述&#xff0c;自行测试吧 本源码下载地址&#xff1a;二开版多语言秒合约交易所系统/区块链交易所系统/完整脚本任务/附带搭建…

抖音小店没有流量不出单?归根到底,就是转化率不行!

哈喽~我是电商月月 新手做抖音小店&#xff0c;最忧愁的就是&#xff1a;店铺不出单怎么办&#xff1f; 商家通常会把没有销量的原因&#xff0c;都推向于“店铺没有流量” 但在抖音&#xff0c;这个日活量高达9亿的平台来说&#xff0c;任何商铺最不缺的应该就是流量了 但…

如何异地组网添加摄像机?

本文将介绍如何使用天联技术实现异地组网添加摄像机&#xff0c;并保障数据的安全性。 安防摄像机的应用愈发广泛&#xff0c;无论是家庭安防还是企业监控&#xff0c;摄像机都扮演着重要角色。在一些特殊场合或者特殊需求下&#xff0c;我们需要将摄像机添加到异地网络中进行监…

人工智能与区块链技术:开启未来科技的双引擎

在当今科技飞速发展的时代&#xff0c;人工智能和区块链技术如同两颗璀璨的明星&#xff0c;照亮了人类通往未来的道路。 人工智能&#xff0c;以其强大的学习和分析能力&#xff0c;正悄然改变着我们的生活。它能够处理海量的数据&#xff0c;为我们提供精准的预测和个性化的…

若依前端vue实现 输入框下拉选择加搜索用户

探索代码以及详细的注解 <template><div><el-select v-model"selectedUserId" filterable placeholder"选择用户" change"handleChange"><el-optionv-for"user in filteredUsers":key"user.userId":l…

C语言 数组——计算最大值的函数实现

目录 计算最大值 计算最大值的函数实现 应用实例&#xff1a;计算班级最高分​编辑​编辑 返回最大值所在的下标位置 返回最大值下标位置的函数实现​编辑 一个综合应用实例——青歌赛选手评分​编辑​编辑​编辑​编辑​编辑 计算最大值 计算最大值的函数实现 应用实例&…

医学科技查新中对查新点的撰写方法!附案例讲解!

我国的科技查新工作最早是从医学领域开始的&#xff0c;始于1985年中国科学院医学情报所&#xff0c;后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c…

Vision Mamba代码笔记

1 论文回顾 基本思路 论文解读见&#xff1a; 《VideoMamba》论文笔记_video mamba-CSDN博客 注意 Vision Mamba和VIT的输入和输出的shape的形状是相同的&#xff08;VIT基于Transformer的Encoder设计&#xff0c;输入经过多层MHA和MLP计算&#xff0c;输入和输出的形状相同…

数智赋能内涝治理,四信城市排水防涝解决方案保障城市安全运行

由强降雨、台风造成城市低洼处出现大量积水、内涝的情况时有发生&#xff0c;给人们出行带来了极大不便和安全隐患&#xff0c;甚至危及群众生命财产安全。 为降低内涝造成的损失&#xff0c;一方面我们要大力加强城市排水基础设施的建设&#xff1b;另一方面要全面掌握城市内涝…

有趣的css - 变幻的按钮

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是一个背景不停变幻的按钮&#xff0c;适用在一些比较年轻、青春风格的网站app中&#xff0c;也可在比较多巴胺风、风格强烈的专题页中使用。 最新文章通过公众号「设计师工作日常」发…

Spring Boot 3.x使用knife4j

Spring Boot 3.x使用knife4j 1.添加knife4j依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version> </dependency>2.在…

基于Perfetto 解读一帧的生产消费流程 Android >= S Qualcomm

广告 首先帮我朋友打个广告 我们一起在运营一个视频号 感兴趣的可以帮忙点击右边这个小铃铛 铃铛 序 1.这个流程里面的东西如果展开其实是有很多的 内容其实还是比较浅显的 sf处就不贴源码了 关一个Vsync就有的解释 当然笔者在流程上先形成一个思维闭环 2.如有小伙伴需要 笔…

备战电赛 | 集创赛提前练 • 第三周

集创赛提前练 | 第三周 &#xff08;点击下面的题目简介即可进入答题界面哦。&#xff09; 题目一 题目难度&#xff1a;中等 题目二&#xff1a;请设计一个可以实现任意小数分频的时钟分频器&#xff0c;例如&#xff0c;8.7分频的时钟信号 题目难度&#xff1a;简单 题目三…

position: absolute对el-dialog的影响

当用到position: absolute,会使元素脱离文档流,从而对原始层级发生变化,导致蒙层无法消失.

酒店线上提前预定小程序源码系统 优惠卷+现实秒杀功能 附带完整的安装代码包以及搭建教程

系统概述 酒店线上提前预定小程序源码系统是一款专门为酒店行业打造的智能化预订平台。它通过整合酒店的房源信息、价格策略、预订流程等&#xff0c;为用户提供了一站式的预订服务。该系统采用先进的技术架构&#xff0c;具有高度的稳定性和安全性&#xff0c;能够满足酒店和…

CentOS 7安装prometheus

说明&#xff1a;本文介绍如何在CentOS操作系统上安装prometheus Step1&#xff1a;下载安装包 访问Github仓库&#xff0c;下载对应版本的prometheus安装包 https://github.com/prometheus/prometheus/releases 操作系统的版本信息&#xff0c;可通过下面这两个命令查看&am…

六种常用设计模式

单例设计模式 单例模式指在整个系统生命周期里&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性。 单例模式分类 单例模式可以分为懒汉式和饿汉式&#xff0c;两者之间的区别在于创建实例的时间不同&#xff1a; 懒汉式&#xff1a;指系统运行中&#…

大语言模型是通用人工智能的实现路径吗?【文末有福利】

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 关于大语言模型的内容&#xff0c;推荐参考这个专栏。 内容大纲 相关说明一、哲学与人工智能二、内容简介三、书籍简介与福利粉…