算法day04

第一题 :

209. 长度最小的子数组

有上题可知,我们会采用双指针和单调性的思路来解决

        我们本题采用左右双指针从数组的0位置同向前进,所以将此类模型称为滑块;

步骤思路如下:

步骤一:

        定义所有双指针都指向数组的0号位置;

步骤二:数组进窗口

        右指针开始向右移动;

步骤三:判断是否数组进窗口或者出窗口

        当当前窗口中的数字sum小于t时,右指针继续向右移动,直到数组之和大于等于t;

        如上图所示,当前的左指针向右移动,将左指针之前所指的元素退出窗口;

此时重复上述的操作,直到right指针到达数组的最右端;

同时我们每一次在判断sum和要要求值之后都要更新len变量的结果

        代码如下所示:

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
         int n = nums.length,sum = 0,lenght = Integer.MAX_VALUE;
        for(int left = 0,right = 0;right < n;right++){
         sum +=nums[right];
            while(sum >= target){
                lenght = Math.min(lenght,(right-left+1));
                sum -=nums[left];
                left ++;
            }
        }
        return lenght == Integer.MAX_VALUE ? 0:lenght;
    }
}

第二题:

3. 无重复字符的最长子串

如上题所示:

        本题采用滑块的相关知识点,如上题故事;

本题主要会采用如下的创新点:

 //把字符串变成字符数组,s1里面的每一个元素都是每一个字符的ascall值

    char[] s = ss.toCharArray();

//用数组模拟哈希表

//即用数组的下标为0的字符来表示ascall值为1 的数组。。。

//用数组里面的数字来表示该字符在hash值里面出现的次数

    int[] hash = new int[128];

用ascall值来映射数组中的字符,同时用数组来类似于hash表,当hash表中存放相应字符的出现次数,每次有相应的字符进入滑块,该字符的出现次数加一,当该hash中相应的位置如果存放的数值大于一时,则滑块中有重复的字符,应该采取进一步的措施;

解题步骤如下:

步骤一:

        定义所有双指针都指向数组的0号位置;

步骤二:数组进窗口

        让字符开始进入hash表;该数组存放的hash表的位置上数据+1;

判断当右指针所指的hash表中数据>1时,我们要移动左指针,将之前进入到窗口里面的元素出去,同时hash表中的数据--;

        同时每一次元素出窗口之后要更新窗口长度并记录在案;

代码如下所示:

class Solution {
    public int lengthOfLongestSubstring(String ss) {
    //把字符串变成字符数组,s1里面的每一个元素都是每一个字符的ascall值
    char[] s = ss.toCharArray();
    //用数组模拟哈希表
    //即用数组的下标为0的字符来表示ascall值为1 的数组。。。
    //用数组里面的数字来表示该字符在hash值里面出现的次数
    int[] hash = new int[128];
   int n = s.length;
    int  res =  0;
    for(int left = 0,right = 0;right < n;){
        hash[s[right]] ++;
        while(hash[s[right]] > 1){
            hash[s[left]] --;
            left ++;
            res= Math.max(res,right-left+1); 
        }
         res= Math.max(res,right-left+1);
         right++;
    } 
    return res;
    }
}

ps:本次的内容就到这里了,如果对你有所帮助的话,就请一键三连哦,文章图片是我喜欢的xox,在这里给大家安利一下哦!!!

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

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

相关文章

时间选择框选择月份后生成选择月份的第一天以及下一个月份的第一天

const onChange e > {const date e ? new Date(e.$d) : new Date()// 获取年份和月份const year date.getFullYear()let month date.getMonth() 1// 格式化月份&#xff0c;确保为两位数字month month < 9 ? 0 month : month// 计算结束年份和月份const endMont…

泥水位监测站的应用场景

TH-SW2泥水位监测站的应用场景相当广泛&#xff0c;包括但不限于以下几种情况&#xff1a; 水源地保护&#xff1a;它可以监测水源地的水质及水位变化&#xff0c;为水源地的保护提供实时数据支持&#xff0c;防止水源污染和过度开采。水库管理&#xff1a;在水库中&#xff0…

从诊室到云端:医疗大模型的应用挑战与未来探索

从诊室到云端&#xff1a;医疗大模型的应用挑战与未来探索 2023年是中国医疗大模型发展的元年&#xff0c;各种医疗大模型已广泛应用于临床辅助决策、医学研究、健康管理等多个场景。未来&#xff0c;医疗大模型有望实现多模态AI与医疗实践全流程的深入链接&#xff0c;应用于医…

【MySQL 数据宝典】【事务锁】- 002 事务控制的演进

一、事务处理思路 1.1 排队 排队处理是事务管理最简单的方法&#xff0c;就是完全顺序执行所有事务的数据库操作&#xff0c;不需要加锁&#xff0c;简单的说就是全局排队。序列化执行所有的事务单元&#xff0c;数据库某个时刻只处理一个事务操作&#xff0c;特点是强一致性…

xhci 寄存器学习

xhci 寄存器介绍 查看linux 代码&#xff1a; 1733 /* There is one xhci_hcd structure per controller */ 1734 struct xhci_hcd { 1735 struct usb_hcd *main_hcd; 1736 struct usb_hcd *shared_hcd; 1737 /* glue to PCI and HCD framework */ 1738 stru…

为你的音视频创作提供助力,好莱坞电影专业音效素材全集

一、素材描述 本套好莱坞电影音效素材全集&#xff0c;来自欧美等国专业音频制作公司和好莱坞电影制作机构多年创作积累的音效库&#xff0c;经过专家精选并配以中文解释&#xff0c;分享给广大业内人士和业余爱好者使用&#xff0c;不失为难得的专业音效素材&#xff0c;为你…

2024年4月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2024年4月国产数据库大事件和重要产品发布消息。 目录 2024年4月国产数据库大事记 TOP102024年4月国产数据库大事记&#xff08;时间线&#xff09;产品/版本发布兼容认证代表厂商大事记排行榜新增数据库厂商活动相关资料 2024年4月国产数据库大事记 …

Vue3的CRUD模版(附Demo)

目录 前言模版 前言 用惯Vue2之后&#xff0c;在碰Vue3后&#xff0c;整体还是有所区别 此文主要做一个回顾总结 假设界面如下&#xff1a; 可CRUD&#xff0c;对应的新增 添加一些必选项&#xff1a; 其中数据库的设计如下&#xff1a; 模版 对应需要注意参数位置、初始…

Python 全栈系列243 S2S flask_celery

说明 按现有的几个架构部件&#xff0c;构建数据流。 S Redis Stream。这个可以作为缓冲队列和简单任务队列&#xff0c;速度非常快&#xff0c;至少是万条/秒的速度。 Q RabbitMQ。这个作为任务队列&#xff0c;消息也主要是元数据。读速比较慢&#xff0c;但有一些特性&a…

【激活函数--中】激活函数和阶跃函数的可视化及对比

文章目录 一、Python中绘制阶跃函数的图形二、实现和可视化Sigmoid函数2.1 Python实现2.2 可视化Sigmoid函数 三、比较Sigmoid函数与阶跃函数3.1 Sigmoid函数与阶跃函数的差异3.2 Sigmoid函数与阶跃函数的共同点 一、Python中绘制阶跃函数的图形 在Python中实现阶跃函数的代码…

智能AI个人名片小程序源码系统 带完整的安装代码包以及搭建部署教程

在当今数字化时代&#xff0c;个人名片不再仅仅是一张简单的纸质卡片&#xff0c;而是演变成了一种更加智能、便捷的数字化工具。为了满足这一需求&#xff0c;小编给大家分享一款智能AI个人名片小程序源码系统&#xff0c;该系统不仅提供了完整的安装代码包&#xff0c;还附带…

(41)5.6-5.8数据结构(栈和队列的应用和数组)

1.栈在括号匹配中的应用 #define _CRT_SECURE_NO_WARNINGS #define MaxSize 10 typedef struct { char data[MaxSize];//静态数组存放栈中元素 int top; //栈顶指针 }SqStack;//初始化栈 void InitStack(SqStack& S);//判断栈是否为空 bool StackEmpty(SqStack S…

轮式机器人简介

迄今为止,轮子一般是移动机器人学和人造交通车辆中最流行的运动机构。它可达到很高的效率, 如图所示, 而且用比较简单的机械就可实现它的制作。 另外,在轮式机器人设计中,平衡通常不是一个研究问题。 因为在所有时间里,轮式机器人一般都被设计成在任何时间里所有轮子均与地接…

vue3父子组件相互调用方法详解

&#x1f49f; 上一篇文章 Vue2中父子组件互相传值和方法调用 &#x1f4dd; 系列专栏 vue从基础到起飞 目录 1、前言 2、子组件调用父组件方法&#xff08;setup组合式&#xff09; 2.1 父组件Father.vue 2.2 子组件Child.vue 3、父组件调用子组件方法&#xff08;setup组…

每天五分钟计算机视觉:使用极大值抑制来寻找最优的目标检测对象

本文重点 在目标检测领域,当模型预测出多个候选框(bounding boxes)时,我们需要一种方法来确定哪些候选框最有可能表示真实的目标。由于模型的不完美性和图像中目标的重叠性,往往会有多个候选框对应于同一个目标。此时,极大值抑制(Non-Maximum Suppression,NMS)技术就…

租用香港Windows服务器要注意的几种安全防护措施

在网络世界里&#xff0c;永远没有绝对的安全&#xff0c;但我们可以通过采取适当的措施使风险降低。对于选择香港Windows服务器租赁的企业和个人来说&#xff0c;保护数据的安全性与隐私至关重要。下面将介绍几种关键的租用香港Windows服务器时应注意的安全防护措施。 1.使用本…

汽车线控转向系统介绍

汽车线控转向系统由方向盘总成、转向执行总成和主控制器(ECU)三个主要部分以及自动防故障系统、电源等辅助系统组成。 线控转向系统(Steering-By-Wire)&#xff0c;取消了方向盘和转向车轮之间的机械连接部件&#xff0c;彻底摆脱了机械固件的限制&#xff0c;完全由电能来实现…

【qt】联合容器和集合容器

联合容器和集合容器 一.QMap1.应用场景2.添加数据3.删除数据4.修改数据5.查找数据6.数据个数7.是否包含8.返回所有的键名 二.QHash1.应用场景&#xff1a; 三.QMultiMap四.QMultiHash五.QSet1.应用场景2.交集3.并集4.差集 总结&#xff1a; 一.QMap 1.应用场景 QMap的底层实现…

智能座舱语音助手产品方案

一、用户调研与痛点分析 1.目标用户分析 用户画像 性别女性年龄50地域2-3线城市职业退休或退居二线教育中专、 大专、 本科财务家庭财务管理者爱好享受生活、 照顾家庭标签有闲有小钱二、产品定位与卖点提炼 购车目的 愉悦自我&#xff0c; 专属于自己的座驾&#xff1a; 家…

接口自动化入门: Requests请求头设置详解!

在进行接口自动化测试时&#xff0c;设置请求头是非常重要的一步。请求头可以包含各种信息&#xff0c;例如身份验证、内容类型、接受语言等。在实际的测试中&#xff0c;我们使用Python的Requests库来发送HTTP请求&#xff0c;并设置请求头来模拟不同的场景和需求。 下面将通…